Paola's TC Sims Wiki
paolasthechallengesimswiki
https://paolasthechallengesims.miraheze.org/wiki/Main_Page
MediaWiki 1.41.0
first-letter
Media
Special
Talk
User
User talk
Paola's TC Sims Wiki
Paola's TC Sims Wiki talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Module
Module talk
Main Page
0
1
1
2024-05-09T11:01:22Z
MediaWiki default
1
Welcome to Miraheze!
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phorge:|Phorge]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
070d9e6457eab136df99905438a1f57c037772b0
2
1
2024-05-09T11:23:49Z
PTCSims
2
Protected "[[Main Page]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phorge:|Phorge]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
070d9e6457eab136df99905438a1f57c037772b0
9
2
2024-05-09T11:50:54Z
PTCSims
2
wikitext
text/x-wiki
=== Programming ===
:{{colorbox|#98FB98}} Currently active
:{{colorbox|#F4C2C2}} Currently inactive
{| class=wikitable style=text-align:left; white-space:nowrap
|-
!colspan=2|Name of show
!Seasons
!First Aired
|-
|style=background-color:#98FB98|
|''[[Main Page|The Challenge]]''
|{{plainlist|
[[The Challenge: Spies, Lies & Allies|Season 1: Spies, Lies & Allies, 2024]]
}}
|May 9th, 2024
|-
|}
85a41094967653fe1d7ddf21792255b49c21d9c6
Template:Colorbox
10
2
3
2024-05-09T11:25:43Z
PTCSims
2
Created page with "<span style="background-color:{{{1|white}}}; border:1px solid darkgray;"> {{#if:{{{2|}}}|{{#if:{{{3|}}}|[[{{{3}}}|{{{2}}}]]|{{{2}}}}}| }} </span><noinclude>{{documentation}} </noinclude><noinclude> </noinclude>"
wikitext
text/x-wiki
<span style="background-color:{{{1|white}}}; border:1px solid darkgray;"> {{#if:{{{2|}}}|{{#if:{{{3|}}}|[[{{{3}}}|{{{2}}}]]|{{{2}}}}}| }} </span><noinclude>{{documentation}}
</noinclude><noinclude>
</noinclude>
231933415f5c22d6f0ee60c2d8717a2b8e1ae442
Template:Documentation
10
3
4
2024-05-09T11:26:25Z
PTCSims
2
Created page with "{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>"
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ce7fd93f18c46b4fa871bf679afd05cbda72d8c4
24
4
2024-05-09T12:40:03Z
PTCSims
2
wikitext
text/x-wiki
<noinclude>{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}</noinclude>
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
3fa7f589dc52f5382852def2dcc2b91ec381382c
51
24
2024-05-09T13:44:14Z
PTCSims
2
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ce7fd93f18c46b4fa871bf679afd05cbda72d8c4
Module:Documentation
828
4
5
2024-05-09T11:27:25Z
PTCSims
2
Created page with "-- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purpos..."
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return '<span class="' .. message('toolbar-class') .. '">('
.. table.concat(ret, ' | ') .. ')</span>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
-- env.printTitle - the print version of the template, located at the /Print subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.printTitle()
--[[
-- Title object for the /Print subpage.
-- Messages:
-- 'print-subpage' --> 'Print'
--]]
return env.templateTitle:subPageTitle(message('print-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = message('view-link-display')
data.editLinkDisplay = message('edit-link-display')
data.historyLinkDisplay = message('history-link-display')
data.purgeLinkDisplay = message('purge-link-display')
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 6 then -- File namespace
preload = message('file-docpage-preload')
elseif subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = message('create-link-display')
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
s = s:gsub('%[', '[') -- Replace square brackets with HTML entities.
s = s:gsub('%]', ']')
return s
end
local ret
local docTitle = data.docTitle
local title = data.title
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
if printBlurb then
text = text .. '<br />' .. printBlurb
end
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = message('edit-link-display')
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = message('history-link-display')
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
function p.makePrintBlurb(args, env)
--[=[
-- Generates the blurb displayed when there is a print version of the template available.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'print-link-display' --> '/Print'
-- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]'
-- .. ' of this template exists at $1.'
-- .. ' If you make a change to this template, please update the print version as well.'
-- 'display-print-category' --> true
-- 'print-category' --> 'Templates with print versions'
--]=]
local printTitle = env.printTitle
if not printTitle then
return nil
end
local ret
if printTitle.exists then
local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display'))
ret = message('print-blurb', {printLink})
local displayPrintCategory = message('display-print-category', nil, 'boolean')
if displayPrintCategory then
ret = ret .. makeCategoryLink(message('print-category'))
end
end
return ret
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
5580b450d7e0e93d5b2243d04e59493523a57d20
Module:Arguments
828
5
6
2024-05-09T11:28:42Z
PTCSims
2
Created page with "-- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string'..."
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Module:Documentation/config
828
6
7
2024-05-09T11:29:11Z
PTCSims
2
Created page with "---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------..."
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Wikipedia:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Please add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['file-docpage-preload']
-- Preload file for documentation page in the file namespace.
cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- Print version configuration
----------------------------------------------------------------------------------------------------
-- cfg['print-subpage']
-- The name of the template subpage used for print versions.
cfg['print-subpage'] = 'Print'
-- cfg['print-link-display']
-- The text to display when linking to the /Print subpage.
cfg['print-link-display'] = '/Print'
-- cfg['print-blurb']
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with
-- a display value of cfg['print-link-display'].
cfg['print-blurb'] = 'A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at $1.'
.. ' If you make a change to this template, please update the print version as well.'
-- cfg['display-print-category']
-- Set to true to enable output of cfg['print-category'] if a /Print subpage exists.
-- This should be a boolean value (either true or false).
cfg['display-print-category'] = true
-- cfg['print-category']
-- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists.
cfg['print-category'] = 'Templates with print versions'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
936dcd942da0ad844cd212849cde5e2dc1e45c3d
Template:Plainlist
10
7
8
2024-05-09T11:30:19Z
PTCSims
2
Created page with "<div class="plainlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}| {{{1}}} </div>}}<noinclude></div> {{documentation}} </noinclude>"
wikitext
text/x-wiki
<div class="plainlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
cd6b6a5ffb75fb4f0a5b0f4e3a9aabbbf2213353
Module:Infobox
828
10
12
2024-05-09T12:03:33Z
PTCSims
2
Created page with "-- -- This module implements {{Infobox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local args = {} local origArgs = {} local root local function notempty( s ) return s and s:match( '%S' ) end local function fixChildBoxes(sval, tt) if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)..."
Scribunto
text/plain
--
-- This module implements {{Infobox}}
--
local p = {}
local navbar = require('Module:Navbar')._navbar
local args = {}
local origArgs = {}
local root
local function notempty( s ) return s and s:match( '%S' ) end
local function fixChildBoxes(sval, tt)
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_musical_artist&oldid=849054481
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
local function union(t1, t2)
-- Returns the union of the values of two tables, as a sequence.
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
local function getArgNums(prefix)
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
local function addRow(rowArgs)
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:attr('id', rowArgs.rowid)
:tag('th')
:attr('colspan', 2)
:attr('id', rowArgs.headerid)
:addClass(rowArgs.class)
:addClass(args.headerclass)
:css('text-align', 'center')
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext('[[Category:Pages which use infobox templates with ignored data cells]]')
end
elseif rowArgs.data then
if not rowArgs.data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then
rowArgs.rowstyle = 'display:none'
end
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row:attr('id', rowArgs.rowid)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:attr('id', rowArgs.labelid)
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
if not rowArgs.label then
dataCell
:attr('colspan', 2)
:css('text-align', 'center')
end
dataCell
:attr('id', rowArgs.dataid)
:addClass(rowArgs.class)
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
end
end
local function renderTitle()
if not args.title then return end
root
:tag('caption')
:addClass(args.titleclass)
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
root
:tag('tr')
:tag('th')
:attr('colspan', 2)
:addClass(args.aboveclass)
:css('text-align', 'center')
:css('font-size', '125%')
:css('font-weight', 'bold')
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass(args.belowclass)
:css('text-align', 'center')
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addRow({
data = args['subheader' .. tostring(num)],
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:cssText(args.captionstyle)
:wikitext(caption)
end
addRow({
data = tostring(data),
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
local function preprocessRows()
-- Gets the union of the header and data argument numbers,
-- and renders them all in order using addRow.
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
local function renderRows()
-- Gets the union of the header and data argument numbers,
-- and renders them all in order using addRow.
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)],
dataid = args['dataid' .. tostring(num)],
labelid = args['labelid' .. tostring(num)],
headerid = args['headerid' .. tostring(num)],
rowid = args['rowid' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'right')
:wikitext(navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
end
end
local function renderTrackingCategories()
if args.decat ~= 'yes' then
if args.child == 'yes' then
if args.title then
root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]')
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles which use infobox templates with no data rows]]')
end
end
end
local function _infobox()
-- Specify the overall layout of the infobox, with special settings
-- if the infobox is used as a 'child' inside another infobox.
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass((args.subbox ~= 'yes') and 'infobox' or nil)
:addClass(args.bodyclass)
if args.subbox == 'yes' then
root
:css('padding', '0')
:css('border', 'none')
:css('margin', '-3px')
:css('width', 'auto')
:css('min-width', '100%')
:css('font-size', '100%')
:css('clear', 'none')
:css('float', 'none')
:css('background-color', 'transparent')
else
root
:css('width', '22em')
end
root
:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
renderSubheaders()
renderImages()
if args.autoheaders then
preprocessRows()
end
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderTrackingCategories()
return tostring(root)
end
local function preprocessSingleArg(argName)
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
local function preprocessArgs(prefixTable, step)
-- Assign the parameters with the given prefixes to the args table, in order, in batches
-- of the step size specified. This is to prevent references etc. from appearing in the
-- wrong order. The prefixTable should be an array containing tables, each of which has
-- two possible fields, a "prefix" string and a "depend" table. The function always parses
-- parameters containing the "prefix" string, but only parses parameters in the "depend"
-- table if the prefix parameter is present and non-blank.
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones.
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present and not blank, or
-- we are processing "prefix1" and "prefix" is present and not blank, and
-- if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
local function parseDataParameters()
-- Parse the data parameters in the same order that the old {{infobox}} did, so that
-- references etc. will display in the expected places. Parameters that depend on
-- another parameter are only processed if that parameter is present, to avoid
-- phantom references appearing in article reference lists.
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'},
{prefix = 'dataid'},
{prefix = 'labelid'},
{prefix = 'headerid'},
{prefix = 'rowid'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent
preprocessSingleArg('decat')
end
function p.infobox(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
function p.infoboxTemplate(frame)
-- For calling via #invoke within a template
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
9d2795ab84d3da6331700b3705be9ac5a8578732
Module:Navbar
828
11
13
2024-05-09T12:04:05Z
PTCSims
2
Created page with "local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false..."
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e
Module:Navbar/configuration
828
12
14
2024-05-09T12:05:01Z
PTCSims
2
Created page with "local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false..."
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e
27
14
2024-05-09T12:48:51Z
PTCSims
2
Scribunto
text/plain
local configuration = {
['templatestyles'] = 'Module:Navbar/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
return configuration
7f1b6300bc4a690ecfb1c83b582f36c603bd1dff
Template:Template other
10
13
16
2024-05-09T12:10:08Z
PTCSims
2
Created page with "{{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude>"
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Module:Check for unknown parameters
828
14
18
2024-05-09T12:18:22Z
PTCSims
2
Created page with "-- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext..."
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local knownargs = {}
local unknown = args['unknown'] or 'Found _VALUE_, '
local preview = args['preview']
local values = {}
local res = {}
local regexps = {}
-- create the list of known args, regular expressions, and the return string
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
if isnotempty(preview) then
preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>'
elseif preview == nil then
preview = unknown
end
-- loop over the parent args, and make sure they are on the list
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and
knownargs[tostring(k)] == nil and
( showblankpos or isnotempty(v) )
then
table.insert(values, k .. ' = ' .. clean(v))
end
end
-- add results to the output tables
if #values > 0 then
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
unknown = preview
end
for _, v in pairs(values) do
if v == '' then
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
v = ' '
end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
82e91534624e40370b95f1a60152f320b41cb688
Template:Main other
10
15
19
2024-05-09T12:18:50Z
PTCSims
2
Created page with "{{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude>"
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}
| main
| other
}}
}}
| main = {{{1|}}}
| other
| #default = {{{2|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
c8e5526da7586aff37928206e183ceef44ed7829
The Challenge Simulators
0
16
21
2024-05-09T12:30:59Z
PTCSims
2
Created page with "{{Infobox television season | bgcolor = #00AC53 | season_name = ''The Duel'' | season_number = 1 | image = DuelLogo.png | image_alt = Duel_cast.png | module1 = {{Infobox reality competition season | presenter = Fanzy Lavin | num_days = | num_contestants = 17 | winners = Caleb Duivel | runner_ups = | location = w:Armação dos Búzios|Armação..."
wikitext
text/x-wiki
{{Infobox television season
| bgcolor = #00AC53
| season_name = ''The Duel''
| season_number = 1
| image = DuelLogo.png
| image_alt = Duel_cast.png
| module1 = {{Infobox reality competition season
| presenter = Fanzy Lavin
| num_days =
| num_contestants = 17
| winners = Caleb Duivel
| runner_ups =
| location = [[w:Armação dos Búzios|Armação dos Búzios]], [[w:Brazil|Brazil]]
| label1 =
| data1 =
| companion_show =
}}
| caption =
| starring =
| country = United States
| num_episodes = 10
| network =
|first_aired = October 9, 2023
|last_aired = November 12, 2023
| prev_season =
| next_season = ''[[The Challenge: Expedition|Expedition]]''
| episode_list =
}}
'''''The Duel''''' is the 1st season of [[The Challenge]]. It premiered on October 9, 2023 and concluded with the reunion special on November 12, 2023. This was the first season where challengers would be competing individually.
==Description==
We're heading to tropical Brazil, where this time it's every man and woman for themselves. 17 competitors face off to win their share of a half million dollars in cash and prizes. But only one competitor will walk away with the grand prize of $300,000 each in the final mission. New rules, new games, new battles... let the Duel begin!
==Contestants==
{|
|- valign="top"
|
{| class="wikitable article-table" style="margin:auto; text-align:center; font-size:8pt; width=100%; line-height:18px;" align="left"
|-
! colspan="2" nowrap="" |Contestant
! ="" | Finish
|-
| [[File:CalebDuelIcon.png|70px|center|link=Caleb Duivel]]
| align="left" |'''[[Caleb Duivel]]'''<br /><small>''Rookie''</small>
| align=left|'''Winner'''<br /><small>''in Duel or Die''</small>
|-
| [[File:KevinDuelIcon.png|70px|center|link=Kevin Rhinebold]]
| align="left" |'''[[Kevin Rhinebold]]'''<br /><small>''Rookie''</small>
| align=left|'''Runner-Up'''<br /><small>''in Duel or Die''</small>
|-
| [[File:IsaacDuelIcon.png|70px|center|link=Isaac O'Brien]]
| align="left" |'''[[Isaac O'Brien]]'''<br /><small>''Rookie''</small>
| align=left|'''Third Place'''<br /><small>''in Duel or Die''</small>
|-
| [[File:CarterDuelIcon.png|70px|center|link=Carter Zoffany]]
| align="left" |'''[[Carter Zoffany]]'''<br /><small>''Rookie''</small>
| align=left|'''Medically Eliminated'''<br /><small>''in Duel or Die''</small>
|-
| [[File:DawnDuelIcon.png|70px|center|link=Dawn Rey]]
| align="left" |'''[[Dawn Rey]]'''<br /><small>''Rookie''</small>
| align=left|'''Quit'''<br /><small>''in Duel or Die''</small>
|-
| [[File:TudorDuelIcon.png|70px|center|link=Tudor Buzoianu]]
| align="left" |'''[[Tudor Buzoianu]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Til Death Duel Us Part''</small>
|-
| [[File:DanielleDuelIcon.png|70px|center|link=Danielle]]
| align="left" |'''[[Danielle Mist]]'''<br /><small>''Rookie''</small>
| align=left|'''Disqualified'''<br /><small>''in Til Death Duel Us Part''</small>
|-
| [[File:MarlonDuelIcon.png|70px|center|link=Marlon Smerk]]
| align="left" |'''[[Marlon Smerk]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Damned If You Duel...''</small>
|-
| [[File:DiaDuelIcon.png|70px|center|link=Dia Diavlo]]
| align="left" |'''[[Dia Diavlo]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in If These Duels Could Talk''</small>
|}
|
{| class="wikitable article-table" align="left" style="margin:auto; text-align:center; font-size:8pt; width=100%; line-height:18px;"
|-
! colspan="2" nowrap="" |Contestant
! nowrap="" | Finish
|-
| [[File:JordanDuelIcon.png|70px|center|link=Jordan Pivarnik]]
| align="left" |'''[[Jordan Pivarnik]]'''<br /><small>''Rookie''</small>
| align=left|'''Disqualified'''<br /><small>''in If These Duels Could Talk''</small>
|-
| [[File:WillowDuelIcon.png|70px|center|link=Willow]]
| align="left" |'''[[Willow Luxz]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Dueling For Caleb''</small>
|-
| [[File:KaceyDuelIcon.png|70px|center|link=Kacey]]
| align="left" |'''[[Kacey]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Duel-ality''</small>
|-
| [[File:KamDuelIcon.png|70px|center|link=Kam]]
| align="left" |'''[[Kam]]'''<br /><small>''Rookie''</small>
| align=left|'''Quit'''<br /><small>''in Duel What You Gotta Duel''</small>
|-
| [[File:HeldaDuelIcon.png|70px|center|link=Helda Handicap]]
| align="left" |'''[[Helda Handicap]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Duel What You Gotta Duel''</small>
|-
| [[File:JamieDuelIcon.png|70px|center|link=Jamie Exotica]]
| align="left" |'''[[Jamie Exotica]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Battle of the Masterminds''</small>
|-
| [[File:MikeDuelIcon.png|70px|center|link=Mike Oxlong]]
| align="left" |'''[[Mike Oxlong]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Tale of Two Cliques''</small>
|-
| [[File:SuminDuelIcon.png|70px|center|link=Sumin Bae]]
| align="left" |'''[[Sumin Bae]]'''<br /><small>''Rookie''</small>
| align=left|'''Disqualified'''<br /><small>''in The Ultimate Duel''</small>
|}
|}
==Format==
Each player participates in numerous challenges (sometimes called "missions"), which are followed by an elimination round — "The Duel". The challenges involve competing individually against each other. Each challenge has two winners. The second place winner is awarded safety from elimination that week. The first place winner is not only awarded with safety, but also with a power vote.
The first place winner of the challenge selects one person to go into the elimination round, which is called ''Duel''. Their opponent is picked by the rest of the house in an anonymous vote. The loser of the Duel is eliminated from the game and is sent home.
At the end of the season, five contestants compete in the final challenge. First-place wins $300,000.
==Game summary==
===Elimination chart===
{|class="wikitable"
|-
!colspan=2|Episode
!colspan=2|Winners
!colspan=2|Duel contestants
!rowspan=2|Duel game
!colspan=2|Duel outcome
|-
!#
!Challenge
!Power Vote
!Immunity
!Power Vote
!House Vote
!Winner
!Eliminated
|-
!1
|Highway to Winning
|Jamie
|Caleb
|Sumin
|Dawn
|N/A
|Dawn
|Sumin<ref>Prior to the elimination, Sumin was disqualified for inactivity.</ref>
|-
!2
|Breaking Phrases
|Caleb
|Kacey
|Mike
|Dia
|Basket Case
|Dia
|Mike
|-
!3
|Who's Got Balls
|Isaac
|Caleb
|Kacey
|Jamie
|Pole Wrestle
|Kacey
|Jamie
|-
!4<ref>Prior to the daily challenge Kam has decided to quit the competition for personal reasons.</ref>
|Getting Wired
|Caleb
|Isaac
|Kevin
|Helda
|Categorized Chaos
|Kevin
|Helda
|-
!5
|Hunting for Numbers
|Isaac
|Caleb
|Kacey
|Jordan
|Multitasking
|Jordan
|Kacey
|-
!6
|Word Search
|Caleb
|Dia
|Kevin
|Willow
|I Can See
|Kevin
|Willow
|-
!7<ref>Prior to the votes being revealed, Jordan got disqualified for inactivity.</ref>
|Trivial Minds
|Isaac
|Kevin
|Caleb
|Dia
|Smash In Puzzle Out
|Caleb
|Dia
|-
!8
|Guess Who?
|Danielle
|Kevin
|Isaac
|Marlon
|Decode & Detonate
|Isaac
|Marlon
|-
!9<ref>After the daily challenge Danielle got disqualified for inactivty.</ref>
|Words of Wisdom
|Kevin
|Caleb
|Dawn
|Tudor<ref>In episode 9, the house vote came to a tie between Isaac & Tudor. Kevin, as the house vote, got to break the tie and chose to send in Tudor.</ref>
|A-maze-ing Race
|Dawn
|Tudor
|-
!10
|The Rio Deal
|Caleb
|colspan=7|2nd: Kevin; 3rd: Isaac
|}
===Duel progress===
{| class="wikitable" style="text-align:center"
|-
! rowspan="2" |Contestants
! colspan="13" |Episodes
|-
!1
!2
!3
!4
!5
!6
!7
!8
!9
!Finale
|-
|nowrap|''Caleb''
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:yellow" |WIN
|style="color:#000; background-color:lime"|'''WINNER'''
|-
|nowrap|''Kevin''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
|style="color:#000; background-color:lightblue"|'''SECOND'''
|-
|nowrap|''Isaac''
|SAFE
|SAFE
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
|SAFE
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
|style="color:#000; background-color:lightblue"|'''THIRD'''
|-
|nowrap|''Carter''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:violet"|'''FOURTH'''
|-
|nowrap|''Dawn''
| style="color:#000; background-color:#ffb6c1" |NOM
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
| style="color:#000; background-color:purple" |<font color="white">'''FIFTH'''</font>
|-
|nowrap|''Tudor''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="1" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Danielle''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:red" |<font color="white">DQ</font>
| colspan="1" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marlon''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="2" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Dia''
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:tomato" |OUT
| colspan="3" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jordan''
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:red" |<font color="white">DQ</font>
| colspan="3" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Willow''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="4" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kacey''
|SAFE
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="5" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Helda''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="6" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kam''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:purple" |<font color="white">QUIT</font>
| colspan="6" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jamie''
| style="color:#000; background-color:deepskyblue" |WIN
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="7" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Mike''
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="8" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sumin''
| style="color:#000; background-color:red" |<font color="white">DQ</font>
| colspan="9" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant did not win the final challenge
:{{Colorbox|deepskyblue|border=silver}} The contestant won the challenge, earned a power vote and was safe from the elimination
:{{Colorbox|yellow|border=silver}} The contestant won the challenge and was safe from elimination
:{{Colorbox|white|border=silver}} The contestant lost the challenge, but the contestant was not chosen for the Duel
:{{Colorbox|#ffb6c1|border=silver}} The contestant was chosen for the elimination, but did not have to compete
:{{Colorbox|green|border=silver}} The contestant won the elimination
:{{Colorbox|tomato|border=silver}} The contestant lost the elimination and was eliminated
:{{Colorbox|red|border=silver}} The contestant was disqualified
:{{Colorbox|purple|border=silver}} The contestant withdrew from the competition
:{{Colorbox|violet|border=silver}} The contestant was removed from the competition due to medical reasons
===Voting progress===
{| class="wikitable" style="text-align:center; font-size:90%; line-height:20px; width:2%"
!House Vote
|'''Dawn'''<br /><small>6 of 16 votes</small>
|'''Dia'''<br /><small>7 of 15 votes</small>
|'''Jamie'''<br /><small>6 of 14 votes</small>
|'''Helda'''<br /><small>7 of 12 votes</small>
|'''Jordan'''<br /><small>5 of 11 votes</small>
|'''Willow'''<br /><small>6 of 10 votes</small>
|'''Caleb'''<br /><small>4 of 8 votes</small>
|'''Marlon'''<br /><small>5 of 7 votes</small>
|'''Tudor'''<br /><small>3 of 5 votes</small>
|-
!Power Vote
|'''Sumin'''<br /><small>Jamie's Vote</small>
|'''Mike'''<br /><small>Caleb's Vote</small>
|'''Kacey'''<br /><small>Isaac's Vote</small>
|'''Kevin'''<br /><small>Caleb's Vote</small>
|'''Kacey'''<br /><small>Isaac's Vote</small>
|'''Kevin'''<br /><small>Caleb's Vote</small>
|'''Dia'''<br /><small>Isaac's Vote</small>
|'''Isaac'''<br /><small>Danielle's Vote</small>
|'''Dawn'''<br /><small>Kevin's Vote</small>
|-
!rowspan=2|Contestant!!colspan=9|Episodes
|-
!1!!2!!3!!4!!5!!6!!7!!8!!9
|-
!''Caleb''
|Sumin
|'''Mike'''
|Jordan
|'''Kevin'''
|Jordan
|'''Kevin'''
|Jordan
|Marlon
|Isaac
|-
!''Kevin''
|Mike
|Dia
|Jamie
|Helda
|Danielle
|Willow
|Caleb
|Marlon
|'''Dawn'''
|-
!''Isaac''
|Dawn
|Dia
|'''Kacey'''
|Helda
|'''Kacey'''
|Willow
|'''Dia'''
|Marlon
|Tudor
|-
!''Carter''
|Dawn
|Dia
|Jamie
|Helda
|Danielle
|Willow
|Jordan
|Marlon
|Tudor
|-
!''Dawn''
|Marlon
|Marlon
|Jamie
|Helda
|Danielle
|Willow
|Caleb
|Caleb
|Isaac
|-
!''Tudor''
|Dawn
|Dia
|Jamie
|Helda
|Danielle
|Willow
|Caleb
|Marlon
|Carter
|-
!Danielle
|Sumin
|Marlon
|Marlon
|Carter
|Carter
|Isaac
|Carter
|'''Isaac'''
| colspan="1" style="color:#000; background-color:darkgray" |
|-
!Marlon
|Dawn
|Carter
|Marlon
|Helda
|Jordan
|Isaac
|Caleb
|Caleb
| colspan="1" style="color:#000; background-color:darkgray" |
|-
!Dia
|Dawn
|Carter
|Jamie
|Jordan
|Jordan
|Isaac
|Carter
| colspan="2" style="color:#000; background-color:darkgray" |
|-
!Jordan
|Dawn
|Dia
|Jamie
|Helda
|Jordan
|Willow
| colspan="3" style="color:#000; background-color:darkgray" |
|-
!Willow
|Sumin
|Kevin
|Kacey
|Jordan
|Jordan
|Isaac
| colspan="3" style="color:#000; background-color:darkgray" |
|-
!Kacey
|Sumin
|Carter
|Willow
|Jordan
|Jordan
| colspan="4" style="color:#000; background-color:darkgray" |
|-
!Helda
|Marlon
|Carter
|Marlon
|Jordan
| colspan="5" style="color:#000; background-color:darkgray" |
|-
!Jamie
|'''Sumin'''
|Dia
|Dia
| colspan="6" style="color:#000; background-color:darkgray" |
|-
!Kam
|Sumin
|Carter
|Willow
| colspan="6" style="color:#000; background-color:darkgray" |
|-
!Mike
|Carter
|Dia
| colspan="7" style="color:#000; background-color:darkgray" |
|-
!Sumin
|N/A
| colspan="8" style="color:#000; background-color:darkgray" |
|}
==Episodes==
<onlyinclude>{{Episode table
|background = #00AC53 |overall=5 |season = 5 |title = 23 |airdate = 16 |episodes =
{{Episode list
| EpisodeNumber = 1
| EpisodeNumber2 = {{anchor|1}}1
| Title = The Ultimate Duel
| OriginalAirDate = October 9, 2023 — October 11, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 2
| EpisodeNumber2 = {{anchor|2}}2
| Title = Tale of Two Cliques
| OriginalAirDate = October 11, 2023 — October 14, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 3
| EpisodeNumber2 = {{anchor|3}}3
| Title = Battle of the Masterminds
| OriginalAirDate = October 14, 2023 — October 16, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 4
| EpisodeNumber2 = {{anchor|4}}4
| Title = Duel What You Gotta Duel
| OriginalAirDate = October 17, 2023 — October 20, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 5
| EpisodeNumber2 = {{anchor|5}}5
| Title = Duel-ality
| OriginalAirDate = October 20, 2023 — October 24, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 6
| EpisodeNumber2 = {{anchor|6}}6
| Title = Dueling for Caleb
| OriginalAirDate = October 24, 2023 — October 26, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 7
| EpisodeNumber2 = {{anchor|7}}7
| Title = If These Duels Could Talk
| OriginalAirDate = October 27, 2023 — October 30, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 8
| EpisodeNumber2 = {{anchor|8}}8
| Title = Damned If You Duel...
| OriginalAirDate = October 30, 2023 — November 04, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 9
| EpisodeNumber2 = {{anchor|9}}9
| Title = Til Death Duel Us Part
| OriginalAirDate = November 04, 2023 — November 07, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 10
| EpisodeNumber2 = {{anchor|10}}10
| Title = Duel or Die
| OriginalAirDate = November 07, 2023 — November 08, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 11
| EpisodeNumber2 = {{anchor|11}}11
| Title = Reunion Special
| OriginalAirDate = November 12, 2023
| ShortSummary =
| LineColor = #00AC53
}}
}}
==External Links==
{{FanzyORGs}}
1aecc8a4bc327a7d3d0c8b626e23604efdc68a05
47
21
2024-05-09T13:24:10Z
PTCSims
2
wikitext
text/x-wiki
align= "left| "{{Infobox television season
| bgcolor = #60B8C3
| prev_season = ''[[The Challenge: Vendettas|Vendettas]]''
| next_season = ''[[The Challenge: War of the Worlds|War of the Worlds]]''
| episode_list =
}}
'''''The Island''''' is the 5th season of [[The Challenge]].
Like previous seasons of The Challenge, The Island featured cast members from various past seasons of The Challenge, competing along with several "rookie" hopefuls. This season featured the contestants "stranded" on an island off the coast of Panama, where the cast competed for a buried treasure chest filled with $500,000 USD in gold. Unlike in previous Challenges, the cast was not housed in a luxurious dwelling, but was "forced" to improvise and "work" for the basic necessities of food and shelter, as on the TV series Survivor. Unlike previous seasons of The Challenge, there were no predetermined teams. Instead, the cast members had to forge their own alliances. Of the twenty cast members, there were only four winners.
==Format==
The contestants are "stranded" on an island, the objective of the challenge is to construct two boats that they are eventually going to be used to reach a nearby island where the buried treasure of $500,000 is hidden. Once the boats are complete, only eight key-holders are allowed to board and compete in a 4-on-4 race to get to the buried treasure.
They then have to choose 3 contestants to go into a face-off. In order to get one of the keys to be in the final race and have a shot for the money, contestants must risk it all in this three-way face-offs. After each face-off, the winner receives a key, the losers get a chance to speak in front of every contestant as should why they should stay in the island, the contestants (except for the winner of the face-off) vote on who should leave the island. In the case of a tie, the winner of the face-off decides who leaves and who stays.
However, the rules of the challenge are given to the competitors as the challenge advances, and the way to get the keys can change at any moment. At the end of the season, the eight key-holders have to divide themselves into two teams of four, build their boats and race to the island where the buried treasure of $500,000 is hidden. The final eliminated contestants can help.
==Contestants==
{|
|- valign="top"
|
{| class="wikitable article-table" style="margin:auto; text-align:center; font-size:8pt; width=100%; line-height:18px;" align="left"
|-
! colspan="2" nowrap="" |Contestant
! ="" | Finish
|-
| [[File:DavidIslandIcon.png|70px|center|link=David Cosmos]]
| align="left" |'''[[David Cosmos]]'''<br /><small>''[[The Challenge: Ride or Dies|Ride or Dies]]''</small>
| align=left rowspan="2"|'''Winner'''<br /><small>''in Episode 9''</small>
|-
| [[File:ElyIslandIcon.png|70px|center|link=Ely Casillas]]
| align="left" |'''[[Ely Casillas]]'''<br /><small>''[[The Challenge: Vendettas|Vendettas]]''</small>
|-
| [[File:GioIslandIcon.png|70px|center|link=Gio Z]]
| align="left" |'''[[Gio Z]]'''<br /><small>''Rookie''</small>
| align=left rowspan="2"|'''Runner-Up'''<br /><small>''in Episode 9''</small>
|-
| [[File:TudorIslandIcon.png|70px|center|link=Tudor Buzoianu]]
| align="left" |'''[[Tudor Buzoianu]]'''<br /><small>''[[The Challenge: Duel|Duel]]''</small>
|-
| [[File:ChandlerIslandIcon.png|70px|center|link=Chandler Pittman]]
| align="left" |'''[[Chandler Pittman]]'''<br /><small>''Rookie''</small>
| align=left rowspan="2"|'''Eliminated'''<br /><small>''in Episode 9''</small>
|-
| [[File:JamieIslandIcon.png|70px|center|link=Jamie Exotica]]
| align="left" |'''[[Jamie Exotica]]'''<br /><small>''[[The Challenge: Duel|Duel]]''</small>
|-
| [[File:IvyIslandIcon.png|70px|center|link=Ivy K]]
| align="left" |'''[[Ivy K]]'''<br /><small>''Rookie''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 8''</small>
|-
| [[File:KevinIslandIcon.png|70px|center|link=Kevin Martinez]]
| align="left" |'''[[Kevin Martinez]]'''<br /><small>''Rookie''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 6''</small>
|-
| [[File:SusieIslandIcon.png|70px|center|link=Susanne Quarters]]
| align="left" |'''[[Susanne Quarters]]'''<br /><small>''Rookie''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 4''</small>
|-
| [[File:KarlIslandIcon.png|70px|center|link=Karl Lin]]
| align="left" |'''[[Karl Lin]]'''<br /><small>''[[The Challenge: Ride or Dies|Ride or Dies]]''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 2''</small>
|}
|
{| class="wikitable article-table" align="left" style="margin:auto; text-align:center; font-size:8pt; width=100%; line-height:18px;"
|-
! colspan="2" nowrap="" |Contestant
! nowrap="" | Finish
|-
| [[File:DennyIslandIcon.png|70px|center|link=Denny Mitchell]]
| align="left" |'''[[Denny Mitchell]]'''<br /><small>''Rookie''</small>
| align=left rowspan="2"|'''Winner'''<br /><small>''in Episode 9''</small>
|-
| [[File:LunarIslandIcon.png|70px|center|link=Lunar Eclipse]]
| align="left" |'''[[Lunar Eclipse]]'''<br /><small>''[[The Challenge: Ride or Dies|Ride or Dies]]''</small>
|-
| [[File:InisraIslandIcon.png|70px|center|link=Inisra Shallow]]
| align="left" |'''[[Inisra Shallow]]'''<br /><small>''Rookie''</small>
| align=left rowspan="2"|'''Runner-Up'''<br /><small>''in Episode 9''</small>
|-
| [[File:ZayaIslandIcon.png|70px|center|link=Zaya Williams]]
| align="left" |'''[[Zaya Williams]]'''<br /><small>''[[The Challenge: Vendettas|Vendettas]]''</small>
|-
| [[File:AchillesIslandIcon.png|70px|center|link=Achilles Aideno]]
| align="left" |'''[[Achilles Aideno]]'''<br /><small>''Rookie''</small>
| align=left rowspan="2"|'''Eliminated'''<br /><small>''in Episode 9''</small>
|-
| [[File:VeronicaIslandIcon.png|70px|center|link=Veronica Pez]]
| align="left" |'''[[Veronica Pez]]'''<br /><small>''[[The Challenge: Ride or Dies|Ride or Dies]]''</small>
|-
| [[File:SammyIslandIcon.png|70px|center|link=Sammy Swindler]]
| align="left" |'''[[Sammy Swindler]]'''<br /><small>''Rookie''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 7''</small>
|-
| [[File:GeorgeIslandIcon.png|70px|center|link=George One]]
| align="left" |'''[[George One]]'''<br /><small>''[[The Challenge: Expedition|Expedition]]''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 5''</small>
|-
| [[File:DawnIslandIcon.png|70px|center|link=Dawn Rey]]
| align="left" |'''[[Dawn Rey]]'''<br /><small>''[[The Challenge: Duel|Duel]]''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 3''</small>
|-
| [[File:RickyIslandIcon.png|70px|center|link=Ricky Owens]]
| align="left" |'''[[Ricky Owens]]'''<br /><small>''[[The Challenge: Ride or Dies|Ride or Dies]]''</small>
| align=left |'''Eliminated'''<br /><small>''in Episode 1''</small>
|}
|}
==Game summary==
{|class="wikitable" style="text-align:left"
|-
!colspan=2|Episode
!rowspan=2|Face-off<br>participants
!colspan=5|Face-off outcome
|-
!#
!Face-off
!Winner
!Key Stolen
!Saved
!Eliminated
!Vote
|-
!rowspan=3|1
|rowspan=3 style="text-align:left"|Beach Cafe
|David
|rowspan=3|David
|rowspan=12 style="background-color:#D3D3D3; text-align: center;"|—
|rowspan=3|Ely
|rowspan=3|Ricky
|rowspan=3|15-2
|-
|Ely
|-
|Ricky
|-
!rowspan=3|2
|rowspan=3 style="text-align:left"|Odd One Out
|David
|rowspan=3|David
|rowspan=3|Veronica
|rowspan=3|Karl
|rowspan=3|12-4
|-
|Karl
|-
|Veronica
|-
!rowspan=3|3
|rowspan=3 style="text-align:left"|Log Out
|Dawn
|rowspan=3|Gio
|rowspan=3|Tudor
|rowspan=3|Dawn
|rowspan=3|11-4
|-
|Gio
|-
|Tudor
|-
!rowspan=3|4
|rowspan=3 style="text-align:left"|Power Outage
|Denny
|rowspan=3|Lunar
|rowspan=3|Denny
|rowspan=3|Susie
|rowspan=3|12-2
|-
|Lunar
|-
|Susie
|-
!rowspan=3|5
|rowspan=3 style="text-align:left"|Water Logged
|Jamie
|rowspan=3|Jamie
|rowspan=3|Tudor
|rowspan=3|Kevin
|rowspan=3|George
|rowspan=3|9-4
|-
|Kevin
|-
|George
|-
!rowspan=3|6
|rowspan=3 style="text-align:left"|Backwards Thinking
|Chandler
|rowspan=3|Chandler
|rowspan=3|Gio
|rowspan=3|Sammy
|rowspan=3|Kevin
|rowspan=3|8-4
|-
|Kevin
|-
|Sammy
|-
!rowspan=3|7
|rowspan=3 style="text-align:left"|Seas The Day
|Inisra
|rowspan=3|Inisra
|rowspan=3|Jamie
|rowspan=3|Tudor
|rowspan=3|Sammy
|rowspan=3|9-2
|-
|Tudor
|-
|Sammy
|-
!rowspan=3|8
|rowspan=3 style="text-align:left"|Coconut Count
|Gio
|rowspan=3|Tudor
|rowspan=3|Veronica
|rowspan=3|Gio
|rowspan=3|Ivy
|rowspan=3|8-2
|-
|Ivy
|-
|Tudor
|-
!rowspan=5|9
|rowspan=4 style="text-align:left"|Puzzle Mania
|Achilles
|rowspan=4|Gio
|rowspan=4|Chandler
|rowspan=4 style="background-color:#D3D3D3; text-align: center;"|—
|Achilles
|rowspan=4 style="background-color:#D3D3D3; text-align: center;"|—
|-
|Gio
|Chandler
|-
|Jamie
|Jamie
|-
|Veronica
|Veronica
|-
|Final Challenge
|colspan="3"|Winners: {{Colorbox|red|border=silver}} David, Denny, Ely, Lunar
|colspan="3"|2nd Place: {{Colorbox|blue|border=silver}} Gio, Inisra, Tudor, Zaya
|}
===Game progress===
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=13|Episodes
|-
!1
!2
!3
!4
!5
!6
!7
!8
!colspan="3"|Final
|-
|nowrap|''David''
|bgcolor="deepskyblue"|WIN
|bgcolor="aquamarine"|WIN
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:red" |
|style="color:#000; background-color:lime"|'''WINNER'''
|-
|nowrap|''Denny''
|SAFE
|SAFE
|SAFE
|bgcolor="wheat"|SAVE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:red" |
|style="color:#000; background-color:lime"|'''WINNER'''
|-
|nowrap|''Ely''
|bgcolor="wheat"|SAVE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:red" |
|style="color:#000; background-color:lime"|'''WINNER'''
|-
|nowrap|''Lunar''
|SAFE
|SAFE
|SAFE
|bgcolor="deepskyblue"|WIN
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:red" |
|style="color:#000; background-color:lime"|'''WINNER'''
|-
|nowrap|''Gio''
|SAFE
|SAFE
|bgcolor="deepskyblue"|WIN
|SAFE
|SAFE
|bgcolor="orange"|LOSE
|SAFE
|bgcolor="yellow"|RISK
| style="color:#000; background-color:green" |<font color="white">WON</font>
| style="color:#000; background-color:blue" |
|style="color:#000; background-color:lightblue"|'''LOSER'''
|-
|nowrap|''Inisra''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">WON</font>
|SAFE
|SAFE
| style="color:#000; background-color:blue" |
|style="color:#000; background-color:lightblue"|'''LOSER'''
|-
|nowrap|''Tudor''
|SAFE
|SAFE
|bgcolor="wheat"|SAVE
|SAFE
|bgcolor="orange"|LOSE
|SAFE
|bgcolor="yellow"|RISK
| style="color:#000; background-color:green" |<font color="white">WON</font>
|SAFE
| style="color:#000; background-color:blue" |
|style="color:#000; background-color:lightblue"|'''LOSER'''
|-
|nowrap|''Zaya''
|SAFE
| style="color:#000; background-color:navy" |<font color="white">KEY</font>
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:blue" |
|style="color:#000; background-color:lightblue"|'''LOSER'''
|-
|nowrap|''Chandler''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">WON</font>
|SAFE
|SAFE
| style="color:#000; background-color:red" |<font color="white">LOST</font>
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap| ''Achilles''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:maroon" |<font color="white">LAST</font>
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jamie''
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">WON</font>
|SAFE
|bgcolor="orange"|LOSE
|SAFE
| style="color:#000; background-color:maroon" |<font color="white">LAST</font>
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Veronica''
|SAFE
|bgcolor="wheat"|SAVE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="orange"|LOSE
| style="color:#000; background-color:maroon" |<font color="white">LAST</font>
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Ivy''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sammy''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="yellow"|RISK
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kevin''
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="yellow"|RISK
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''George''
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Susie''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Dawn''
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Karl''
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Ricky''
| style="color:#000; background-color:tomato" |OUT
| colspan="15" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the face-off and a key
:{{Colorbox|green|border=silver}} The contestant won the face-off and took the key of another contestant
:{{Colorbox|aquamarine|border=silver}} The contestant won the face-off and was forced to give it out to another contestant
:{{Colorbox|wheat|border=silver}} The contestant lost the face-off, but was not eliminated and received a key
:{{Colorbox|yellow|border=silver}} The contestant lost the face-off, but was not eliminated
:{{Colorbox|orange|border=silver}} The contestant had their key stolen by the face-off winner
:{{Colorbox|red|border=silver}} The contestant had their key stolen by the face-off winner and was automatically eliminated
:{{Colorbox|maroon|border=silver}} The contestant lost the face-off and was automatically eliminated
:{{Colorbox|tomato|border=silver}} The contestant lost the face-off and was voted out
:{{Colorbox|navy|border=silver}} The contestant was given a key by another player
5ac0bd4d7a3d03ce44f4285386df2494dcd7eac9
48
47
2024-05-09T13:36:58Z
PTCSims
2
wikitext
text/x-wiki
==Game summary==
{|Class="wikitable"
|-
!colspan=1|Previous <br> Season
!colspan=1|Next<br> Season
|-
|nowrap="" align="center"|''N/A''
|nowrap="" align="center"| ''N/A''
|}
[[Amanda]]
'''''The Duel''''' is the 1st season of [[The Challenge]]. It premiered on October 9, 2023 and concluded with the reunion special on November 12, 2023. This was the first season where challengers would be competing individually.
==Description==
We're heading to tropical Brazil, where this time it's every man and woman for themselves. 17 competitors face off to win their share of a half million dollars in cash and prizes. But only one competitor will walk away with the grand prize of $300,000 each in the final mission. New rules, new games, new battles... let the Duel begin!
==Contestants==
{|
|- valign="top"
|
{| class="wikitable article-table" style="margin:auto; text-align:center; font-size:8pt; width=100%; line-height:18px;" align="left"
|-
! colspan="2" nowrap="" |Contestant
! ="" | Finish
|-
| [[File:CalebDuelIcon.png|70px|center|link=Caleb Duivel]]
| align="left" |'''[[Caleb Duivel]]'''<br /><small>''Rookie''</small>
| align=left|'''Winner'''<br /><small>''in Duel or Die''</small>
|-
| [[File:KevinDuelIcon.png|70px|center|link=Kevin Rhinebold]]
| align="left" |'''[[Kevin Rhinebold]]'''<br /><small>''Rookie''</small>
| align=left|'''Runner-Up'''<br /><small>''in Duel or Die''</small>
|-
| [[File:IsaacDuelIcon.png|70px|center|link=Isaac O'Brien]]
| align="left" |'''[[Isaac O'Brien]]'''<br /><small>''Rookie''</small>
| align=left|'''Third Place'''<br /><small>''in Duel or Die''</small>
|-
| [[File:CarterDuelIcon.png|70px|center|link=Carter Zoffany]]
| align="left" |'''[[Carter Zoffany]]'''<br /><small>''Rookie''</small>
| align=left|'''Medically Eliminated'''<br /><small>''in Duel or Die''</small>
|-
| [[File:DawnDuelIcon.png|70px|center|link=Dawn Rey]]
| align="left" |'''[[Dawn Rey]]'''<br /><small>''Rookie''</small>
| align=left|'''Quit'''<br /><small>''in Duel or Die''</small>
|-
| [[File:TudorDuelIcon.png|70px|center|link=Tudor Buzoianu]]
| align="left" |'''[[Tudor Buzoianu]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Til Death Duel Us Part''</small>
|-
| [[File:DanielleDuelIcon.png|70px|center|link=Danielle]]
| align="left" |'''[[Danielle Mist]]'''<br /><small>''Rookie''</small>
| align=left|'''Disqualified'''<br /><small>''in Til Death Duel Us Part''</small>
|-
| [[File:MarlonDuelIcon.png|70px|center|link=Marlon Smerk]]
| align="left" |'''[[Marlon Smerk]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Damned If You Duel...''</small>
|-
| [[File:DiaDuelIcon.png|70px|center|link=Dia Diavlo]]
| align="left" |'''[[Dia Diavlo]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in If These Duels Could Talk''</small>
|}
|
{| class="wikitable article-table" align="left" style="margin:auto; text-align:center; font-size:8pt; width=100%; line-height:18px;"
|-
! colspan="2" nowrap="" |Contestant
! nowrap="" | Finish
|-
| [[File:JordanDuelIcon.png|70px|center|link=Jordan Pivarnik]]
| align="left" |'''[[Jordan Pivarnik]]'''<br /><small>''Rookie''</small>
| align=left|'''Disqualified'''<br /><small>''in If These Duels Could Talk''</small>
|-
| [[File:WillowDuelIcon.png|70px|center|link=Willow]]
| align="left" |'''[[Willow Luxz]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Dueling For Caleb''</small>
|-
| [[File:KaceyDuelIcon.png|70px|center|link=Kacey]]
| align="left" |'''[[Kacey]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Duel-ality''</small>
|-
| [[File:KamDuelIcon.png|70px|center|link=Kam]]
| align="left" |'''[[Kam]]'''<br /><small>''Rookie''</small>
| align=left|'''Quit'''<br /><small>''in Duel What You Gotta Duel''</small>
|-
| [[File:HeldaDuelIcon.png|70px|center|link=Helda Handicap]]
| align="left" |'''[[Helda Handicap]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Duel What You Gotta Duel''</small>
|-
| [[File:JamieDuelIcon.png|70px|center|link=Jamie Exotica]]
| align="left" |'''[[Jamie Exotica]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Battle of the Masterminds''</small>
|-
| [[File:MikeDuelIcon.png|70px|center|link=Mike Oxlong]]
| align="left" |'''[[Mike Oxlong]]'''<br /><small>''Rookie''</small>
| align=left|'''Eliminated'''<br /><small>''in Tale of Two Cliques''</small>
|-
| [[File:SuminDuelIcon.png|70px|center|link=Sumin Bae]]
| align="left" |'''[[Sumin Bae]]'''<br /><small>''Rookie''</small>
| align=left|'''Disqualified'''<br /><small>''in The Ultimate Duel''</small>
|}
|}
==Format==
Each player participates in numerous challenges (sometimes called "missions"), which are followed by an elimination round — "The Duel". The challenges involve competing individually against each other. Each challenge has two winners. The second place winner is awarded safety from elimination that week. The first place winner is not only awarded with safety, but also with a power vote.
The first place winner of the challenge selects one person to go into the elimination round, which is called ''Duel''. Their opponent is picked by the rest of the house in an anonymous vote. The loser of the Duel is eliminated from the game and is sent home.
At the end of the season, five contestants compete in the final challenge. First-place wins $300,000.
==Game summary==
===Elimination chart===
{|class="wikitable"
|-
!colspan=2|Episode
!colspan=2|Winners
!colspan=2|Duel contestants
!rowspan=2|Duel game
!colspan=2|Duel outcome
|-
!#
!Challenge
!Power Vote
!Immunity
!Power Vote
!House Vote
!Winner
!Eliminated
|-
!1
|Highway to Winning
|Jamie
|Caleb
|Sumin
|Dawn
|N/A
|Dawn
|Sumin<ref>Prior to the elimination, Sumin was disqualified for inactivity.</ref>
|-
!2
|Breaking Phrases
|Caleb
|Kacey
|Mike
|Dia
|Basket Case
|Dia
|Mike
|-
!3
|Who's Got Balls
|Isaac
|Caleb
|Kacey
|Jamie
|Pole Wrestle
|Kacey
|Jamie
|-
!4<ref>Prior to the daily challenge Kam has decided to quit the competition for personal reasons.</ref>
|Getting Wired
|Caleb
|Isaac
|Kevin
|Helda
|Categorized Chaos
|Kevin
|Helda
|-
!5
|Hunting for Numbers
|Isaac
|Caleb
|Kacey
|Jordan
|Multitasking
|Jordan
|Kacey
|-
!6
|Word Search
|Caleb
|Dia
|Kevin
|Willow
|I Can See
|Kevin
|Willow
|-
!7<ref>Prior to the votes being revealed, Jordan got disqualified for inactivity.</ref>
|Trivial Minds
|Isaac
|Kevin
|Caleb
|Dia
|Smash In Puzzle Out
|Caleb
|Dia
|-
!8
|Guess Who?
|Danielle
|Kevin
|Isaac
|Marlon
|Decode & Detonate
|Isaac
|Marlon
|-
!9<ref>After the daily challenge Danielle got disqualified for inactivty.</ref>
|Words of Wisdom
|Kevin
|Caleb
|Dawn
|Tudor<ref>In episode 9, the house vote came to a tie between Isaac & Tudor. Kevin, as the house vote, got to break the tie and chose to send in Tudor.</ref>
|A-maze-ing Race
|Dawn
|Tudor
|-
!10
|The Rio Deal
|Caleb
|colspan=7|2nd: Kevin; 3rd: Isaac
|}
===Duel progress===
{| class="wikitable" style="text-align:center"
|-
! rowspan="2" |Contestants
! colspan="13" |Episodes
|-
!1
!2
!3
!4
!5
!6
!7
!8
!9
!Finale
|-
|nowrap|''Caleb''
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:yellow" |WIN
|style="color:#000; background-color:lime"|'''WINNER'''
|-
|nowrap|''Kevin''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
|style="color:#000; background-color:lightblue"|'''SECOND'''
|-
|nowrap|''Isaac''
|SAFE
|SAFE
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:deepskyblue" |WIN
|SAFE
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
|style="color:#000; background-color:lightblue"|'''THIRD'''
|-
|nowrap|''Carter''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:violet"|'''FOURTH'''
|-
|nowrap|''Dawn''
| style="color:#000; background-color:#ffb6c1" |NOM
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
| style="color:#000; background-color:purple" |<font color="white">'''FIFTH'''</font>
|-
|nowrap|''Tudor''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="1" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Danielle''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:deepskyblue" |WIN
| style="color:#000; background-color:red" |<font color="white">DQ</font>
| colspan="1" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marlon''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="2" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Dia''
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:tomato" |OUT
| colspan="3" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jordan''
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:red" |<font color="white">DQ</font>
| colspan="3" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Willow''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="4" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kacey''
|SAFE
| style="color:#000; background-color:yellow" |WIN
| style="color:#000; background-color:darkgreen" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="5" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Helda''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="6" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kam''
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:purple" |<font color="white">QUIT</font>
| colspan="6" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jamie''
| style="color:#000; background-color:deepskyblue" |WIN
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="7" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Mike''
|SAFE
| style="color:#000; background-color:tomato" |OUT
| colspan="8" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sumin''
| style="color:#000; background-color:red" |<font color="white">DQ</font>
| colspan="9" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant did not win the final challenge
:{{Colorbox|deepskyblue|border=silver}} The contestant won the challenge, earned a power vote and was safe from the elimination
:{{Colorbox|yellow|border=silver}} The contestant won the challenge and was safe from elimination
:{{Colorbox|white|border=silver}} The contestant lost the challenge, but the contestant was not chosen for the Duel
:{{Colorbox|#ffb6c1|border=silver}} The contestant was chosen for the elimination, but did not have to compete
:{{Colorbox|green|border=silver}} The contestant won the elimination
:{{Colorbox|tomato|border=silver}} The contestant lost the elimination and was eliminated
:{{Colorbox|red|border=silver}} The contestant was disqualified
:{{Colorbox|purple|border=silver}} The contestant withdrew from the competition
:{{Colorbox|violet|border=silver}} The contestant was removed from the competition due to medical reasons
===Voting progress===
{| class="wikitable" style="text-align:center; font-size:90%; line-height:20px; width:2%"
!House Vote
|'''Dawn'''<br /><small>6 of 16 votes</small>
|'''Dia'''<br /><small>7 of 15 votes</small>
|'''Jamie'''<br /><small>6 of 14 votes</small>
|'''Helda'''<br /><small>7 of 12 votes</small>
|'''Jordan'''<br /><small>5 of 11 votes</small>
|'''Willow'''<br /><small>6 of 10 votes</small>
|'''Caleb'''<br /><small>4 of 8 votes</small>
|'''Marlon'''<br /><small>5 of 7 votes</small>
|'''Tudor'''<br /><small>3 of 5 votes</small>
|-
!Power Vote
|'''Sumin'''<br /><small>Jamie's Vote</small>
|'''Mike'''<br /><small>Caleb's Vote</small>
|'''Kacey'''<br /><small>Isaac's Vote</small>
|'''Kevin'''<br /><small>Caleb's Vote</small>
|'''Kacey'''<br /><small>Isaac's Vote</small>
|'''Kevin'''<br /><small>Caleb's Vote</small>
|'''Dia'''<br /><small>Isaac's Vote</small>
|'''Isaac'''<br /><small>Danielle's Vote</small>
|'''Dawn'''<br /><small>Kevin's Vote</small>
|-
!rowspan=2|Contestant!!colspan=9|Episodes
|-
!1!!2!!3!!4!!5!!6!!7!!8!!9
|-
!''Caleb''
|Sumin
|'''Mike'''
|Jordan
|'''Kevin'''
|Jordan
|'''Kevin'''
|Jordan
|Marlon
|Isaac
|-
!''Kevin''
|Mike
|Dia
|Jamie
|Helda
|Danielle
|Willow
|Caleb
|Marlon
|'''Dawn'''
|-
!''Isaac''
|Dawn
|Dia
|'''Kacey'''
|Helda
|'''Kacey'''
|Willow
|'''Dia'''
|Marlon
|Tudor
|-
!''Carter''
|Dawn
|Dia
|Jamie
|Helda
|Danielle
|Willow
|Jordan
|Marlon
|Tudor
|-
!''Dawn''
|Marlon
|Marlon
|Jamie
|Helda
|Danielle
|Willow
|Caleb
|Caleb
|Isaac
|-
!''Tudor''
|Dawn
|Dia
|Jamie
|Helda
|Danielle
|Willow
|Caleb
|Marlon
|Carter
|-
!Danielle
|Sumin
|Marlon
|Marlon
|Carter
|Carter
|Isaac
|Carter
|'''Isaac'''
| colspan="1" style="color:#000; background-color:darkgray" |
|-
!Marlon
|Dawn
|Carter
|Marlon
|Helda
|Jordan
|Isaac
|Caleb
|Caleb
| colspan="1" style="color:#000; background-color:darkgray" |
|-
!Dia
|Dawn
|Carter
|Jamie
|Jordan
|Jordan
|Isaac
|Carter
| colspan="2" style="color:#000; background-color:darkgray" |
|-
!Jordan
|Dawn
|Dia
|Jamie
|Helda
|Jordan
|Willow
| colspan="3" style="color:#000; background-color:darkgray" |
|-
!Willow
|Sumin
|Kevin
|Kacey
|Jordan
|Jordan
|Isaac
| colspan="3" style="color:#000; background-color:darkgray" |
|-
!Kacey
|Sumin
|Carter
|Willow
|Jordan
|Jordan
| colspan="4" style="color:#000; background-color:darkgray" |
|-
!Helda
|Marlon
|Carter
|Marlon
|Jordan
| colspan="5" style="color:#000; background-color:darkgray" |
|-
!Jamie
|'''Sumin'''
|Dia
|Dia
| colspan="6" style="color:#000; background-color:darkgray" |
|-
!Kam
|Sumin
|Carter
|Willow
| colspan="6" style="color:#000; background-color:darkgray" |
|-
!Mike
|Carter
|Dia
| colspan="7" style="color:#000; background-color:darkgray" |
|-
!Sumin
|N/A
| colspan="8" style="color:#000; background-color:darkgray" |
|}
==Episodes==
<onlyinclude>{{Episode table
|background = #00AC53 |overall=5 |season = 5 |title = 23 |airdate = 16 |episodes =
{{Episode list
| EpisodeNumber = 1
| EpisodeNumber2 = {{anchor|1}}1
| Title = The Ultimate Duel
| OriginalAirDate = October 9, 2023 — October 11, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 2
| EpisodeNumber2 = {{anchor|2}}2
| Title = Tale of Two Cliques
| OriginalAirDate = October 11, 2023 — October 14, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 3
| EpisodeNumber2 = {{anchor|3}}3
| Title = Battle of the Masterminds
| OriginalAirDate = October 14, 2023 — October 16, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 4
| EpisodeNumber2 = {{anchor|4}}4
| Title = Duel What You Gotta Duel
| OriginalAirDate = October 17, 2023 — October 20, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 5
| EpisodeNumber2 = {{anchor|5}}5
| Title = Duel-ality
| OriginalAirDate = October 20, 2023 — October 24, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 6
| EpisodeNumber2 = {{anchor|6}}6
| Title = Dueling for Caleb
| OriginalAirDate = October 24, 2023 — October 26, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 7
| EpisodeNumber2 = {{anchor|7}}7
| Title = If These Duels Could Talk
| OriginalAirDate = October 27, 2023 — October 30, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 8
| EpisodeNumber2 = {{anchor|8}}8
| Title = Damned If You Duel...
| OriginalAirDate = October 30, 2023 — November 04, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 9
| EpisodeNumber2 = {{anchor|9}}9
| Title = Til Death Duel Us Part
| OriginalAirDate = November 04, 2023 — November 07, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 10
| EpisodeNumber2 = {{anchor|10}}10
| Title = Duel or Die
| OriginalAirDate = November 07, 2023 — November 08, 2023
| ShortSummary =
| LineColor = #00AC53
}}
{{Episode list
| EpisodeNumber = 11
| EpisodeNumber2 = {{anchor|11}}11
| Title = Reunion Special
| OriginalAirDate = November 12, 2023
| ShortSummary =
| LineColor = #00AC53
}}
}}
==External Links==
{{FanzyORGs}}
431b4cfbfa65430e417be0ae1dc01b4ecf1e9445
Template:Infobox
10
17
22
2024-05-09T12:35:05Z
PTCSims
2
Created page with "{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude>"
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
23
22
2024-05-09T12:35:56Z
PTCSims
2
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
07110749065473ca638997d73c745468b6a20b24
25
23
2024-05-09T12:45:30Z
PTCSims
2
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
36
25
2024-05-09T13:00:28Z
PTCSims
2
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
{{Italic title}}
1d766660fa65d2cc641d51f56c31fec66bedc2c8
41
36
2024-05-09T13:04:52Z
PTCSims
2
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
54
41
2024-05-09T13:55:46Z
PTCSims
2
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
5d85d37c5ae6fc8a42cd0648239c6958a76dd93f
Template:Infobox television season
10
18
26
2024-05-09T12:46:24Z
PTCSims
2
Created page with "{{Infobox | italic title = {{#ifeq: {{Str right|{{PAGENAMEBASE}}|7}} | List of | no | {{{italic_title|<noinclude>no</noinclude>}}} }} | bodyclass = vevent | aboveclass = summary | abovestyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1..."
wikitext
text/x-wiki
{{Infobox
| italic title = {{#ifeq: {{Str right|{{PAGENAMEBASE}}|7}} | List of | no | {{{italic_title|<noinclude>no</noinclude>}}} }}
| bodyclass = vevent
| aboveclass = summary
| abovestyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em;
| above = {{#if: {{{season_name|}}} | {{{season_name|}}} | <includeonly>''{{PAGENAMEBASE}}''</includeonly> }}
| subheaderstyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em; font-weight: bold; font-size: 120%;
| subheader = {{#invoke:Infobox television season name|getInfoboxSubHeader|{{{season_number|}}}|{{{series_number|}}}}}
| captionstyle = font-size: 95%; line-height: 1.5em;
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_alt|{{{alt|}}}}}}}}
| caption = {{{caption|}}}
| headerclass = summary
| headerstyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em;
| autoheaders = y
| labelstyle = white-space: nowrap;
| label1 = Native name
| data1 = {{{native_name|}}}
| label2 = Starring
| data2 = {{{starring|}}}
| data3 = {{{module1|}}}
| label4 = Country of origin
| data4 = {{{country|}}}
| label5 = {{Abbr|No.|Number}} of stories
| data5 = {{#ifeq: {{PAGENAMEBASE}} | Doctor Who | {{{num_stories|}}} }}
| label6 = {{Abbr|No.|Number}} of episodes
| data6 = {{{num_episodes|}}}
| header8 = Release
| label9 = Original network
| data9 = {{{network|}}}
| label10 = Original release
| data10 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired|}}} |{{{released|}}} }}|{{{last_aired|}}}}}
| data11 = {{{module|}}}
| header12 = Additional information
| label13 = Filming dates
| data13 = {{#invoke:Infobox/dates|dates|{{{film_start|}}}|{{{film_end|}}}}}
| label16 = Website
| data16 = {{{website|}}}
| header17 = {{If empty |{{ucfirst:{{#invoke:Infobox television season name|getSeasonWord}} }} |Season }} chronology
| rowclass18 = noprint
| data18 = <!--
### PREVIOUS SEASON LINK ###
-->{{#if: {{{prev_season|}}} {{{prev_series|}}} | {{Align|left|← '''Previous'''<br />{{If empty |{{{prev_season|}}} |{{{prev_series|}}} }} }} | <!--
-->{{#if: {{#invoke:Infobox television season name|checkPrevSeason}} | {{align|left|<!--
-->← '''Previous'''<br />{{#invoke:Infobox television season name|getPrevSeasonArticle}}<!--
-->}} }} }}<!--
### NEXT SEASON LINK ###
-->{{#if: {{{next_season|}}} {{{next_series|}}} | {{Align|right|'''Next''' →<br />{{If empty |{{{next_season|}}} |{{{next_series|}}} }} }} |<!--
-->{{#if: {{#invoke:Infobox television season name|checkNextSeason}} | {{align|right|<!--
-->'''Next''' →<br />{{#invoke:Infobox television season name|getNextSeasonArticle}}<!--
-->}} }} }}
| belowclass = noprint
| below = {{#invoke:Infobox television season name|getListOfEpisodes|link={{{episode_list|}}}}}
}}
013a7a20eb51f00269a82d92bf24c7e1954bd999
Template:Align
10
19
28
2024-05-09T12:50:15Z
PTCSims
2
Created page with "{{#switch: {{lc:{{{1|center}}}}} |left = <div style="float: left;{{#if: {{{style|}}} | {{{style}}};}}">{{{2}}}</div> |right = <div style="float: right;{{#if: {{{style|}}} | {{{style}}};}}">{{{2}}}</div> |center = {{center|{{{2}}}|style={{{style|}}} }} |#default = Error in [[Template:Align]]: the alignment setting "{{{1}}}" is invalid. }}<noinclude> {{documentation}} </noinclude>"
wikitext
text/x-wiki
{{#switch: {{lc:{{{1|center}}}}}
|left = <div style="float: left;{{#if: {{{style|}}} | {{{style}}};}}">{{{2}}}</div>
|right = <div style="float: right;{{#if: {{{style|}}} | {{{style}}};}}">{{{2}}}</div>
|center = {{center|{{{2}}}|style={{{style|}}} }}
|#default = Error in [[Template:Align]]: the alignment setting "{{{1}}}" is invalid.
}}<noinclude>
{{documentation}}
</noinclude>
0ea58be48b7851cc59fbf8be038120d9c10a84ac
Template:Center
10
20
29
2024-05-09T12:50:54Z
PTCSims
2
Created page with "<includeonly><div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if: {{{style|}}} | {{{style}}};}}">{{{1|[[Category:Pages using center with no arguments]]}}}</div></includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude>"
wikitext
text/x-wiki
<includeonly><div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if: {{{style|}}} | {{{style}}};}}">{{{1|[[Category:Pages using center with no arguments]]}}}</div></includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
1bcdac1c025611248a10a1f17cdfdedcc3b1d6c1
Module:Infobox television season name
828
21
30
2024-05-09T12:51:41Z
PTCSims
2
Created page with "local match = require("Module:String")._match local p = {} --[[ Local function which is used to create an pipped article link. --]] local function createArticleTitleWithPipedLink(article, pipedLink) if (pipedLink == nil or pipedLink == "") then return "[[" .. article .. "]]" else return "[[" .. article .. "|" .. pipedLink .. "]]" end end --[[ Local helper function which is used to get the current season number and modified show name from the show name. --]] loc..."
Scribunto
text/plain
local match = require("Module:String")._match
local p = {}
--[[
Local function which is used to create an pipped article link.
--]]
local function createArticleTitleWithPipedLink(article, pipedLink)
if (pipedLink == nil or pipedLink == "") then
return "[[" .. article .. "]]"
else
return "[[" .. article .. "|" .. pipedLink .. "]]"
end
end
--[[
Local helper function which is used to get the current season number and modified show name
from the show name.
--]]
local function getModifiedShowNameAndCurrentSeasonNumberFromShowName(showName)
local _, _, showNameModified, seasonNumber = string.find(showName, "(.*)%s+(%d+)")
return showNameModified, seasonNumber
end
--[[
Local helper function which is used to get the current season number from the disambiguation.
--]]
local function getCurrentSeasonNumberFromDisambiguation(shortDisambiguation)
return match(shortDisambiguation , "%d+", 1, -1, false, "")
end
--[[
Local helper function which is used to get the type of word used for "season"
in the disambiguation.
Returns one of three options: "season", "series" or "story arc".
--]]
local function getSeasonType(shortDisambiguation)
if (string.find(shortDisambiguation, "story arc")) then
return "story arc"
end
if (string.find(shortDisambiguation, "series")) then
return "series"
end
return "season"
end
--[[
Local helper function which is used to get the short disambiguation,
without the "(year) TV series," part, which can cause issues later on.
--]]
local function getShortDisambiguation(disambiguation)
return string.gsub(disambiguation, "%d+ TV series, ", "")
end
--[[
Local helper function which is used to get the disambiguation from the title.
--]]
local function getDisambiguation(title)
local disambiguation = match(title, "%s%((.-)%)", 1, -1, false, "")
if (disambiguation == "") then
return nil
else
return disambiguation
end
end
--[[
Local helper function which is used to get the show name from the title.
--]]
local function getShowName(title)
return mw.ustring.gsub(title, "%s+%b()$", "")
end
--[[
Local function which is used to check if the given article exists.
The function returns "true" in the following cases:
-- A season article exists.
-- A redirect exists to a season section.
The function returns nil in the following cases:
-- A season article or redirect do not exist.
-- A redirect exists, but it is a general redirect and not for any specific season section.
]]--
local function checkArticle(articleTitle)
local article = mw.title.new(articleTitle)
if (article ~= nil and article.exists) then
local redirectTarget = article.redirectTarget
if (redirectTarget) then
local fullLink = redirectTarget.fullText
local isSection = fullLink:find("#")
if (isSection) then
return "true" -- Article is a section redirect; Valid link.
else
return nil -- Article is a general redirect; Not a valid link.
end
else
return "true" -- Article exists and is not a redirect; Valid link.
end
else
return nil -- Article or redirect do not exist; Not a valid link.
end
end
--[[
Local function which returns a season article title and a piped link.
The following are the supported season naming styles:
-- <showName> (<seasonType> <seasonNumber>)
Example: Lost (season 2).
-- <showName> (<country> <seasonType> <seasonNumber>)
Example: The Office (American season 2).
Example: X Factor (British series 2).
-- <showName> (<country> <seasonType>)
Example: Big Brother 2 (American season).
-- <showName> (<year> TV series, <seasonType> <seasonNumber>)
Example: Teenage Mutant Ninja Turtles (1987 TV series, season 2)
-- <showName> (<country> TV series, <seasonType> <seasonNumber>)
Example: Love Island (British TV series, series 2)
--]]
local function getArticleTitle(title, prevOrNextSeasonNumber)
local showName = getShowName(title)
local disambiguation = getDisambiguation(title)
local shortDisambiguation
local seasonType
local seasonNumber = ""
local pipedLink = ""
if (disambiguation) then
shortDisambiguation = getShortDisambiguation(disambiguation)
seasonType = getSeasonType(shortDisambiguation)
seasonNumber = getCurrentSeasonNumberFromDisambiguation(shortDisambiguation)
pipedLink = seasonType:gsub("^%l", string.upper) .. " "
end
local showNameModified
if (seasonNumber == "") then
if (string.match(showName , "%s+(%d+)")) then
showNameModified, seasonNumber = getModifiedShowNameAndCurrentSeasonNumberFromShowName(showName)
else
return "" -- Not a valid next/prev season link
end
end
if (tonumber(seasonNumber) == nil) then
return ""
else
seasonNumber = seasonNumber + prevOrNextSeasonNumber
pipedLink = pipedLink .. seasonNumber
-- Titles such as "Big Brother 1 (American season)""
if (showNameModified and disambiguation) then
return showNameModified .. " " .. seasonNumber .. " (" .. disambiguation .. ")", pipedLink
-- Titles such as "Big Brother Brasil 1"
elseif (showNameModified) then
return showNameModified .. " " .. seasonNumber, nil
-- Standard titles such as "Lost (season 1)"
else
disambiguation = string.gsub(disambiguation, "%d+$", seasonNumber)
return showName .. " (" .. disambiguation .. ")", pipedLink
end
end
end
--[[
Local helper function which is used to get the title,
either from args (usually from /testcases) or from the page itself.
--]]
local function getTitle(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local title = args.title
if (not title) then
title = mw.title.getCurrentTitle().text
end
return title
end
--[[
Local helper function which is called to create a TV season title for the next or previous season.
Passes the value "1" or -1" to increment or decrement the current season number.
--]]
local function createArticleTitleHelper(frame, number)
local title = getTitle(frame)
return getArticleTitle(title, number)
end
--[[
Local helper function which is used to check if a season article exists.
--]]
local function checkSeason(frame, number)
local articleTitle = createArticleTitleHelper(frame, number)
return checkArticle(articleTitle)
end
--[[
Local helper function which is used to create a season article link.
--]]
local function getSeasonArticleLink(frame, number)
local articleTitle, pipedLink = createArticleTitleHelper(frame, number)
return createArticleTitleWithPipedLink(articleTitle, pipedLink)
end
--[[
Public function which is used to check if the next season has
a valid created article or redirect.
--]]
function p.checkNextSeason(frame)
return checkSeason(frame, 1)
end
--[[
Public function which is used to check if the previous season has
a valid article or redirect.
--]]
function p.checkPrevSeason(frame)
return checkSeason(frame, -1)
end
--[[
Public function which is used to check if the next or previous season have
a valid article or redirect.
Parameters:
--]]
function p.checkAll(frame)
if (p.checkPrevSeason(frame) == "true") then
return "true"
else
return p.checkNextSeason(frame)
end
end
--[[
Public function which is used to get the next season article title.
--]]
function p.getNextSeasonArticle(frame)
return getSeasonArticleLink(frame, 1)
end
--[[
Public function which is used to get the previous season article title.
--]]
function p.getPrevSeasonArticle(frame)
return getSeasonArticleLink(frame, -1)
end
--[[
Public function which is used to get the type of season word used - "season" or "series".
--]]
function p.getSeasonWord(frame)
local title = getTitle(frame)
local disambiguation = getDisambiguation(title)
if (disambiguation) then
local shortDisambiguation = getShortDisambiguation(disambiguation)
return getSeasonType(shortDisambiguation)
else
return ""
end
end
--[[
Public function which is used to return the relevant text for the sub-header field.
The text is returned in the format of <code>Season #</code> or <code>Series #</code>,
depending on either what the article disambiguation uses, or on manually entered parameters of the infobox.
--]]
function p.getInfoboxSubHeader(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local seasonType
local seasonNumber
if (args.season_number) then
seasonType = "Season"
seasonNumber = args.season_number
elseif (args.series_number) then
seasonType = "Series"
seasonNumber = args.series_number
end
local title = getTitle(frame)
local showName = getShowName(title)
local disambiguation = getDisambiguation(title)
if (not seasonNumber and disambiguation) then
local shortDisambiguation = getShortDisambiguation(disambiguation)
seasonType = getSeasonType(shortDisambiguation)
seasonType = seasonType:sub(1, 1):upper() .. seasonType:sub(2)
seasonNumber = getCurrentSeasonNumberFromDisambiguation(shortDisambiguation)
end
if (seasonNumber and seasonNumber ~= "") then
return seasonType .. " " .. seasonNumber
end
return nil
end
--[[
Public function which is used to return the formatted link
to the list of episodes article in the style of:
[List of <series name> <disambiguation if present> episodes <seasons if present>|List of ''<series name>'' episodes <seasons if present>]
The link will only return if the page exists.
--]]
function p.getListOfEpisodes(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local listRange = ""
local title = getTitle(frame)
local showName
local disambiguation
if (args.link) then
-- Parameter should be unformatted.
if (string.find(args.link, "%[")) then
local delink = require('Module:Delink')._delink
args.link = delink({args.link})
end
-- Get the season or year range if present.
-- Examples:
-- List of The Simpsons episodes (seasons 1–20) will return '(seasons 1–20)'.
-- List of Doctor Who episodes (2005–present) will return '(2005–present)'.
listRange = args.link:match('episodes(.*)$') or ""
-- Get the series name with disambiguation.
local seriesNameWithDisambiguation = args.link:match('List of (.*) episodes')
if (seriesNameWithDisambiguation) then
showName = getShowName(seriesNameWithDisambiguation)
disambiguation = getDisambiguation(seriesNameWithDisambiguation)
end
else
showName = getShowName(title)
disambiguation = getDisambiguation(title)
end
if (disambiguation) then
if string.match(disambiguation, "^season %d*$") or string.match(disambiguation, "^series %d*$") then
-- Check if the disambiguation is normal 'season #' or 'series #'.
-- If so, remove disambiguation.
disambiguation = ""
elseif (string.find(disambiguation, "TV series")) then
-- Check if the disambiguation is extended
-- and has 'TV series' and isn't just season #.
-- Only leave the TV series disambiguation, not including the season #.
-- Example: Teenage Mutant Ninja Turtles (1987 TV series, season 55) will return '1987 TV series'.
disambiguation = disambiguation:match('^(.*),') or disambiguation
disambiguation = string.format(" (%s)", disambiguation)
else
-- Check if the disambiguation is extended with country adjective.
-- Example: The Office (American season 2) will return "American season 2".
-- Keep only country adjective.
local countryDisambiguation = disambiguation:match('^(.*) season %d*') or disambiguation:match('^(.*) series %d*')
local data = mw.loadData('Module:Country adjective')
local valid_result = data.getCountryFromAdj[countryDisambiguation]
-- Check if the country adjective is valid.
if (valid_result) then
-- Add 'TV series' suffix
disambiguation = string.format(" (%s)", countryDisambiguation .. ' TV series')
else
-- Not a known diambiguation style. Use whatever was used in the title or manually added.
-- Note: might not be a valid style link.
disambiguation = string.format(" (%s)", disambiguation)
end
end
else
disambiguation = ""
end
if (showName) then
local episodeListArticle = "List of %s%s episodes%s"
episodeListArticle = episodeListArticle:format(showName, disambiguation, listRange)
local episodeListArticlePage = mw.title.new(episodeListArticle, 0)
if (episodeListArticlePage.exists and episodeListArticlePage.redirectTarget ~= mw.title.getCurrentTitle()) then
local episodeList = "[[%s|List of ''%s'' episodes%s]]"
episodeList = episodeList:format(episodeListArticle, showName, listRange)
return episodeList
end
end
end
return p
549501b490bfdf818d80346a3cf14cedf9c534f6
Template:If empty
10
22
31
2024-05-09T12:52:30Z
PTCSims
2
Created page with "{{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}<noinclude>{{Documentation}}</noinclude>"
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}<noinclude>{{Documentation}}</noinclude>
745940b7bdde8a1585c887ee4ee5ce81d98461a4
Module:If empty
828
23
32
2024-05-09T12:53:03Z
PTCSims
2
Created page with "local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = '' lowestNil = i end end for..."
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
-- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank,
-- even though there's really no legitimate use case for this. At some point, this will be removed.
local lowestNil = math.huge
for i = 8,1,-1 do
if args[i] == nil then
args[i] = ''
lowestNil = i
end
end
for k,v in ipairs(args) do
if v ~= '' then
if lowestNil < k then
-- If any uses of this template depend on the behavior above, add them to a tracking category.
-- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified
-- by it.
frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'})
frame:extensionTag('references', '', {group = 'TrackingCategory'})
end
return v
end
end
end
return p
39b83f8d043283ec767774d927e2f6f3fb3078b4
Module:String
828
24
33
2024-05-09T12:53:57Z
PTCSims
2
Created page with "--[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error c..."
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Module:InfoboxImage
828
25
34
2024-05-09T12:54:32Z
PTCSims
2
Created page with "-- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if th..."
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center= frame.args["center"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
elseif alt ~= "" and alt ~= nil then
result = result .. "|" .. alt;
end
result = result .. "]]";
return result;
end
end
return i;
38b039ea7e8e97872d1823bbf507dc8d86527fd9
Module:Infobox/dates
828
26
35
2024-05-09T12:54:51Z
PTCSims
2
Created page with "local getArgs = require('Module:Arguments').getArgs local default_error_category = "[[Category:Pages using infobox television with nonstandard dates]]" local p = {} function p.start_end_date_template_validation(frame) local args = getArgs(frame) local error_category = args.error_category or default_error_category local start_date = args.first_aired or args.released if start_date then if not start_date:find("dtstart") then return error_category end end l..."
Scribunto
text/plain
local getArgs = require('Module:Arguments').getArgs
local default_error_category = "[[Category:Pages using infobox television with nonstandard dates]]"
local p = {}
function p.start_end_date_template_validation(frame)
local args = getArgs(frame)
local error_category = args.error_category or default_error_category
local start_date = args.first_aired or args.released
if start_date then
if not start_date:find("dtstart") then
return error_category
end
end
local end_date = args.last_aired
if end_date then
if not end_date:find("dtend") and end_date ~= "present" then
return error_category
end
end
end
function p.dates(frame)
local returnval
local args = getArgs(frame)
if table.getn(args) < 2 then
if args['1'] == nil and args['2'] == nil then
return ''
elseif args['1'] == nil then
return args['2']
elseif args['2'] == nil then
return args['1']
end
end
args['1'] = args['1']:gsub(" "," ")
args['2'] = args['2']:gsub(" "," ")
local dmy = false
local pr1, m1, d1, y1, su1 = string.match(args['1'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)')
local pr2, m2, d2, y2, su2 = string.match(args['2'], '(.-)(%u%a+)%s(%d+),%s(%d+)(.*)')
if y1 == nil then
dmy = true
pr1, d1, m1, y1, su1 = string.match(args['1'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)')
pr2, d2, m2, y2, su2 = string.match(args['2'], '(.-)(%d%d?)%s(%a+)%s(%d+)(.*)')
end
local dash = ' –<br />'
if y1 ~= nil and y2 ~= nil then
su1 = su1 or ''
su2 = su2 or ''
local MONTHS = {January=1, February=2, March=3, April=4, May=5, June=6, July=7, August=8, September=9, October=10, November=11, December=12}
local diff = os.time({year=y2, month=MONTHS[m2], day=d2, hour=0, min=0, sec=0}) - os.time({year=y1, month=MONTHS[m1], day=d1, hour=0, min=0, sec=0})
if diff < 0 then
returnval = 'Invalid date range'
else
if y1 == y2 then
if dmy == false then
returnval = pr1 .. m1 .. ' ' .. d1 .. su1 .. dash .. pr2 .. m2 ..' '.. d2 ..', '.. y2 .. su2
else
returnval = pr1 .. d1 .. ' ' .. m1 .. su1 .. dash .. pr2 .. d2 .. ' ' .. m2 .. ' ' .. y2 .. su2
end
else
if dmy == false then
returnval = pr1 .. m1 .. ' ' .. d1 ..', '.. y1 .. su1 .. dash .. pr2 .. m2 .. ' '.. d2 .. ', ' .. y2 .. su2
else
returnval = pr1 .. d1 .. ' ' .. m1 ..' '.. y1 .. su1 .. dash .. pr2 .. d2 .. ' '.. m2 .. ' ' .. y2 .. su2
end
end
end
else
returnval = args['1']..dash..args['2'];
end
return returnval;
end
return p
d68ce3076b533ac673fc8ec9c25d1555072b5dd6
Template:Italic title
10
27
37
2024-05-09T13:01:57Z
PTCSims
2
Created page with "{{#invoke:Italic title|main}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> </noinclude>"
wikitext
text/x-wiki
{{#invoke:Italic title|main}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata. -->
</noinclude>
8f33f6ed6f6ece31417924c00158b619d181b8ee
Module:Italic title
828
28
38
2024-05-09T13:03:03Z
PTCSims
2
Created page with "-- This module implements {{italic title}}. require('Module:No globals') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local yesno = require('Module:Yesno') -------------------------------------------------------------------------------- -- ItalicTitle class -------------------------------------------------------------------------------- local ItalicTitle = {} do -----..."
Scribunto
text/plain
-- This module implements {{italic title}}.
require('Module:No globals')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local yesno = require('Module:Yesno')
--------------------------------------------------------------------------------
-- ItalicTitle class
--------------------------------------------------------------------------------
local ItalicTitle = {}
do
----------------------------------------------------------------------------
-- Class attributes and functions
-- Things that belong to the class are here. Things that belong to each
-- object are in the constructor.
----------------------------------------------------------------------------
-- Keys of title parts that can be italicized.
local italicizableKeys = {
namespace = true,
title = true,
dab = true,
}
----------------------------------------------------------------------------
-- ItalicTitle constructor
-- This contains all the dynamic attributes and methods.
----------------------------------------------------------------------------
function ItalicTitle.new()
local obj = {}
-- Function for checking self variable in methods.
local checkSelf = libraryUtil.makeCheckSelfFunction(
'ItalicTitle',
'obj',
obj,
'ItalicTitle object'
)
-- Checks a key is present in a lookup table.
-- Param: name - the function name.
-- Param: argId - integer position of the key in the argument list.
-- Param: key - the key.
-- Param: lookupTable - the table to look the key up in.
local function checkKey(name, argId, key, lookupTable)
if not lookupTable[key] then
error(string.format(
"bad argument #%d to '%s' ('%s' is not a valid key)",
argId,
name,
key
), 3)
end
end
-- Set up object structure.
local parsed = false
local categories = {}
local italicizedKeys = {}
local italicizedSubstrings = {}
-- Parses a title object into its namespace text, title, and
-- disambiguation text.
-- Param: options - a table of options with the following keys:
-- title - the title object to parse
-- ignoreDab - ignore any disambiguation parentheses
-- Returns the current object.
function obj:parseTitle(options)
checkSelf(self, 'parseTitle')
checkType('parseTitle', 1, options, 'table')
checkTypeForNamedArg('parseTitle', 'title', options.title, 'table')
local title = options.title
-- Title and dab text
local prefix, parentheses
if not options.ignoreDab then
prefix, parentheses = mw.ustring.match(
title.text,
'^(.+) %(([^%(%)]+)%)$'
)
end
if prefix and parentheses then
self.title = prefix
self.dab = parentheses
else
self.title = title.text
end
-- Namespace
local namespace = mw.site.namespaces[title.namespace].name
if namespace and #namespace >= 1 then
self.namespace = namespace
end
-- Register the object as having parsed a title.
parsed = true
return self
end
-- Italicizes part of the title.
-- Param: key - the key of the title part to be italicized. Possible
-- keys are contained in the italicizableKeys table.
-- Returns the current object.
function obj:italicize(key)
checkSelf(self, 'italicize')
checkType('italicize', 1, key, 'string')
checkKey('italicize', 1, key, italicizableKeys)
italicizedKeys[key] = true
return self
end
-- Un-italicizes part of the title.
-- Param: key - the key of the title part to be un-italicized. Possible
-- keys are contained in the italicizableKeys table.
-- Returns the current object.
function obj:unitalicize(key)
checkSelf(self, 'unitalicize')
checkType('unitalicize', 1, key, 'string')
checkKey('unitalicize', 1, key, italicizableKeys)
italicizedKeys[key] = nil
return self
end
-- Italicizes a substring in the title. This only affects the main part
-- of the title, not the namespace or the disambiguation text.
-- Param: s - the substring to be italicized.
-- Returns the current object.
function obj:italicizeSubstring(s)
checkSelf(self, 'italicizeSubstring')
checkType('italicizeSubstring', 1, s, 'string')
italicizedSubstrings[s] = true
return self
end
-- Un-italicizes a substring in the title. This only affects the main
-- part of the title, not the namespace or the disambiguation text.
-- Param: s - the substring to be un-italicized.
-- Returns the current object.
function obj:unitalicizeSubstring(s)
checkSelf(self, 'unitalicizeSubstring')
checkType('unitalicizeSubstring', 1, s, 'string')
italicizedSubstrings[s] = nil
return self
end
-- Renders the object into a page name. If no title has yet been parsed,
-- the current title is used.
-- Returns string
function obj:renderTitle()
checkSelf(self, 'renderTitle')
-- Italicizes a string
-- Param: s - the string to italicize
-- Returns string.
local function italicize(s)
assert(type(s) == 'string', 's was not a string')
assert(s ~= '', 's was the empty string')
return string.format('<i>%s</i>', s)
end
-- Escape characters in a string that are magic in Lua patterns.
-- Param: pattern - the pattern to escape
-- Returns string.
local function escapeMagicCharacters(s)
assert(type(s) == 'string', 's was not a string')
return s:gsub('%p', '%%%0')
end
-- If a title hasn't been parsed yet, parse the current title.
if not parsed then
self:parseTitle{title = mw.title.getCurrentTitle()}
end
-- Italicize the different parts of the title and store them in a
-- titleParts table to be joined together later.
local titleParts = {}
-- Italicize the italicizable keys.
for key in pairs(italicizableKeys) do
if self[key] then
if italicizedKeys[key] then
titleParts[key] = italicize(self[key])
else
titleParts[key] = self[key]
end
end
end
-- Italicize substrings. If there are any substrings to be
-- italicized then start from the raw title, as this overrides any
-- italicization of the main part of the title.
if next(italicizedSubstrings) then
titleParts.title = self.title
for s in pairs(italicizedSubstrings) do
local pattern = escapeMagicCharacters(s)
local italicizedTitle, nReplacements = titleParts.title:gsub(
pattern,
italicize
)
titleParts.title = italicizedTitle
-- If we didn't make any replacements then it means that we
-- have been passed a bad substring or that the page has
-- been moved to a bad title, so add a tracking category.
if nReplacements < 1 then
categories['Pages using italic title with no matching string'] = true
end
end
end
-- Assemble the title together from the parts.
local ret = ''
if titleParts.namespace then
ret = ret .. titleParts.namespace .. ':'
end
ret = ret .. titleParts.title
if titleParts.dab then
ret = ret .. ' (' .. titleParts.dab .. ')'
end
return ret
end
-- Returns an expanded DISPLAYTITLE parser function called with the
-- result of obj:renderTitle, plus any other optional arguments.
-- Returns string
function obj:renderDisplayTitle(...)
checkSelf(self, 'renderDisplayTitle')
return mw.getCurrentFrame():callParserFunction(
'DISPLAYTITLE',
self:renderTitle(),
...
)
end
-- Returns an expanded DISPLAYTITLE parser function called with the
-- result of obj:renderTitle, plus any other optional arguments, plus
-- any tracking categories.
-- Returns string
function obj:render(...)
checkSelf(self, 'render')
local ret = self:renderDisplayTitle(...)
for cat in pairs(categories) do
ret = ret .. string.format(
'[[Category:%s]]',
cat
)
end
return ret
end
return obj
end
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
local function getArgs(frame, wrapper)
assert(type(wrapper) == 'string', 'wrapper was not a string')
return require('Module:Arguments').getArgs(frame, {
wrappers = wrapper
})
end
-- Main function for {{italic title}}
function p._main(args)
checkType('_main', 1, args, 'table')
local italicTitle = ItalicTitle.new()
italicTitle:parseTitle{
title = mw.title.getCurrentTitle(),
ignoreDab = yesno(args.all, false)
}
if args.string then
italicTitle:italicizeSubstring(args.string)
else
italicTitle:italicize('title')
end
return italicTitle:render(args[1])
end
function p.main(frame)
return p._main(getArgs(frame, 'Template:Italic title'))
end
function p._dabonly(args)
return ItalicTitle.new()
:italicize('dab')
:render(args[1])
end
function p.dabonly(frame)
return p._dabonly(getArgs(frame, 'Template:Italic dab'))
end
return p
8c5cb60620fbf423b53f2a170efe7b2380a31c08
Module:No globals
828
29
39
2024-05-09T13:03:52Z
PTCSims
2
Created page with "local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt)"
Scribunto
text/plain
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
if k ~= 'arg' then
error('Tried to read nil global ' .. tostring(k), 2)
end
return nil
end
function mt.__newindex(t, k, v)
if k ~= 'arg' then
error('Tried to write global ' .. tostring(k), 2)
end
rawset(t, k, v)
end
setmetatable(_G, mt)
8ce3969f7d53b08bd00dabe4cc9780bc6afd412a
Module:Yesno
828
30
40
2024-05-09T13:04:38Z
PTCSims
2
Created page with "-- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val =..."
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Template:Abbr
10
31
42
2024-05-09T13:05:48Z
PTCSims
2
Created page with "<abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}} </noinclude>"
wikitext
text/x-wiki
<abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}}
</noinclude>
5fd53aa19ba927ce3eea9092a4fa31f881df0a6e
Template:Infobox reality competition season
10
32
43
2024-05-09T13:06:55Z
PTCSims
2
Created page with "{{Infobox | child = yes | decat = yes <!-- remove from Template:infobox tracking categories --> | label1 = {{#if: {{{presenter|}}} | Presented by | Hosted by }} | data1 = {{If empty |{{{presenter|}}} {{{host|}}} }} | label2 = Judges | data2 = {{{judges|}}} | label3 = Coaches | data3 = {{{coaches|}}} | label4 = {{Abbr|No.|Number}} of days | data4 = {{{num_days|}}} | label5 = {{Abbr|No.|Number}} of tasks | d..."
wikitext
text/x-wiki
{{Infobox
| child = yes
| decat = yes <!-- remove from Template:infobox tracking categories -->
| label1 = {{#if: {{{presenter|}}} | Presented by | Hosted by }}
| data1 = {{If empty |{{{presenter|}}} {{{host|}}} }}
| label2 = Judges
| data2 = {{{judges|}}}
| label3 = Coaches
| data3 = {{{coaches|}}}
| label4 = {{Abbr|No.|Number}} of days
| data4 = {{{num_days|}}}
| label5 = {{Abbr|No.|Number}} of tasks
| data5 = {{{num_tasks|}}}
| label6 = {{Abbr|No.|Number}} of {{#if: {{{num_contestants|}}} | contestants | {{#if: {{{num_housemates|}}} | housemates | {{#if: {{{num_houseguests|}}} | houseguests | {{#if: {{{num_survivors|}}} | castaways | teams }} }} }} }}
| data6 = {{If empty |{{{num_contestants|}}} |{{{num_housemates|}}} |{{{num_houseguests|}}} |{{{num_survivors|}}} |{{{num_teams|}}} }}
| label7 = {{#if: {{{winner|}}} | Winner | Winners }}
| data7 = {{If empty |{{{winner|}}} |{{{winning_team|}}} |{{{winners|}}} }}
| label8 = Celebrity winner
| data8 = {{{celebrity_winner|}}}
| label9 = Professional winner
| data9 = {{{professional_winner|}}}
| label10 = Winning {{#if: {{{winner_mentor|}}} | mentor | coach }}
| data10 = {{If empty |{{{winner_mentor|}}} |{{{winner_coach|}}} }}
| label11 = {{#if: {{{runner_up|}}} | Runner-up | Runners-up }}
| data11 = {{If empty |{{{runner_up|}}} |{{{runner_ups|}}} }}
| label12 = Location
| data12 = {{{location|}}}
| label13 = Finals venue
| data13 = {{{finals_venue|}}}
| label14 = {{abbr|No.|Number}} of legs
| data14 = {{{num_legs|}}}
| label15 = Distance traveled
| data15 = {{convinfobox|{{{miles_traveled|}}}|mi|{{{km_traveled|}}}|km}}
| label16 = {{{label1|}}}
| data16 = {{{data1|}}}
| label17 = {{#if: {{{companion_show|}}} | Companion show | Companion shows }}
| data17 = {{If empty |{{{companion_show|}}} |{{{companion_shows|}}} }}
| captionstyle = font-size: 95%; line-height: 1.5em;
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_alt|{{{alt|}}}}}}}}
| caption = {{{caption|}}}
}}<!-- Start tracking
-->{{#if: {{{data1|}}} | {{Main other|[[Category:Pages using infobox reality competition season with the data1 parameter|{{{label1|}}}]]}} }}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox reality competition season with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox reality competition season]] with unknown parameter "_VALUE_"|showblankpositional=1| celebrity_winner | coaches | companion_show | companion_shows | data1 | finals_venue | host | judges | km_traveled | location | label1 | miles_traveled | num_contestants | num_days | num_houseguests | num_housemates | num_legs | num_survivors | num_teams | num_tasks | presenter | professional_winner | runner_up | runner_ups | winner | winner_coach | winner_mentor | winners | winning_team | image | image_alt | image_size | image_upright}}<!-- End tracking --><noinclude>
{{Documentation}}
</noinclude>
9c6682df7f90e66fdd96e52db3d16b2d78e23ed6
46
43
2024-05-09T13:09:38Z
PTCSims
2
wikitext
text/x-wiki
{{Infobox
| italic title = {{#ifeq: {{Str right|{{PAGENAMEBASE}}|7}} | List of | no | {{{italic_title|<noinclude>no</noinclude>}}} }}
| bodyclass = vevent
| aboveclass = summary
| abovestyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em;
| above = {{#if: {{{season_name|}}} | {{{season_name|}}} | <includeonly>''{{PAGENAMEBASE}}''</includeonly> }}
| subheaderstyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em; font-weight: bold; font-size: 120%;
| subheader = {{#invoke:Infobox television season name|getInfoboxSubHeader|{{{season_number|}}}|{{{series_number|}}}}}
| captionstyle = font-size: 95%; line-height: 1.5em;
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_alt|{{{alt|}}}}}}}}
| caption = {{{caption|}}}
| headerclass = summary
| headerstyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em;
| autoheaders = y
| labelstyle = white-space: nowrap;
| label1 = Native name
| data1 = {{{native_name|}}}
| label2 = Starring
| data2 = {{{starring|}}}
| data3 = {{{module1|}}}
| label4 = Country of origin
| data4 = {{{country|}}}
| label5 = {{Abbr|No.|Number}} of stories
| data5 = {{#ifeq: {{PAGENAMEBASE}} | Doctor Who | {{{num_stories|}}} }}
| label6 = {{Abbr|No.|Number}} of episodes
| data6 = {{{num_episodes|}}}
| header8 = Release
| label9 = Original network
| data9 = {{{network|}}}
| label10 = Original release
| data10 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired|}}} |{{{released|}}} }}|{{{last_aired|}}}}}
| data11 = {{{module|}}}
| header12 = Additional information
| label13 = Filming dates
| data13 = {{#invoke:Infobox/dates|dates|{{{film_start|}}}|{{{film_end|}}}}}
| label16 = Website
| data16 = {{{website|}}}
| header17 = {{If empty |{{ucfirst:{{#invoke:Infobox television season name|getSeasonWord}} }} |Season }} chronology
| rowclass18 = noprint
| data18 = <!--
### PREVIOUS SEASON LINK ###
-->{{#if: {{{prev_season|}}} {{{prev_series|}}} | {{Align|left|← '''Previous'''<br />{{If empty |{{{prev_season|}}} |{{{prev_series|}}} }} }} | <!--
-->{{#if: {{#invoke:Infobox television season name|checkPrevSeason}} | {{align|left|<!--
-->← '''Previous'''<br />{{#invoke:Infobox television season name|getPrevSeasonArticle}}<!--
-->}} }} }}<!--
### NEXT SEASON LINK ###
-->{{#if: {{{next_season|}}} {{{next_series|}}} | {{Align|right|'''Next''' →<br />{{If empty |{{{next_season|}}} |{{{next_series|}}} }} }} |<!--
-->{{#if: {{#invoke:Infobox television season name|checkNextSeason}} | {{align|right|<!--
-->'''Next''' →<br />{{#invoke:Infobox television season name|getNextSeasonArticle}}<!--
-->}} }} }}
| belowclass = noprint
| below = {{#invoke:Infobox television season name|getListOfEpisodes|link={{{episode_list|}}}}}
}}
013a7a20eb51f00269a82d92bf24c7e1954bd999
52
46
2024-05-09T13:50:25Z
PTCSims
2
wikitext
text/x-wiki
{{Infobox
| child = yes
| decat = yes <!-- remove from Template:infobox tracking categories -->
| label1 = {{#if: {{{presenter|}}} | Presented by | Hosted by }}
| data1 = {{If empty |{{{presenter|}}} {{{host|}}} }}
| label2 = Judges
| data2 = {{{judges|}}}
| label3 = Coaches
| data3 = {{{coaches|}}}
| label4 = {{Abbr|No.|Number}} of days
| data4 = {{{num_days|}}}
| label5 = {{Abbr|No.|Number}} of tasks
| data5 = {{{num_tasks|}}}
| label6 = {{Abbr|No.|Number}} of {{#if: {{{num_contestants|}}} | contestants | {{#if: {{{num_housemates|}}} | housemates | {{#if: {{{num_houseguests|}}} | houseguests | {{#if: {{{num_survivors|}}} | castaways | teams }} }} }} }}
| data6 = {{If empty |{{{num_contestants|}}} |{{{num_housemates|}}} |{{{num_houseguests|}}} |{{{num_survivors|}}} |{{{num_teams|}}} }}
| label7 = {{#if: {{{winner|}}} | Winner | Winners }}
| data7 = {{If empty |{{{winner|}}} |{{{winning_team|}}} |{{{winners|}}} }}
| label8 = Celebrity winner
| data8 = {{{celebrity_winner|}}}
| label9 = Professional winner
| data9 = {{{professional_winner|}}}
| label10 = Winning {{#if: {{{winner_mentor|}}} | mentor | coach }}
| data10 = {{If empty |{{{winner_mentor|}}} |{{{winner_coach|}}} }}
| label11 = {{#if: {{{runner_up|}}} | Runner-up | Runners-up }}
| data11 = {{If empty |{{{runner_up|}}} |{{{runner_ups|}}} }}
| label12 = Location
| data12 = {{{location|}}}
| label13 = Finals venue
| data13 = {{{finals_venue|}}}
| label14 = {{abbr|No.|Number}} of legs
| data14 = {{{num_legs|}}}
| label15 = Distance traveled
| data15 = {{convinfobox|{{{miles_traveled|}}}|mi|{{{km_traveled|}}}|km}}
| label16 = {{{label1|}}}
| data16 = {{{data1|}}}
| label17 = {{#if: {{{companion_show|}}} | Companion show | Companion shows }}
| data17 = {{If empty |{{{companion_show|}}} |{{{companion_shows|}}} }}
| captionstyle = font-size: 95%; line-height: 1.5em;
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_alt|{{{alt|}}}}}}}}
| caption = {{{caption|}}}
}}<!-- Start tracking
-->{{#if: {{{data1|}}} | {{Main other|[[Category:Pages using infobox reality competition season with the data1 parameter|{{{label1|}}}]]}} }}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox reality competition season with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox reality competition season]] with unknown parameter "_VALUE_"|showblankpositional=1| celebrity_winner | coaches | companion_show | companion_shows | data1 | finals_venue | host | judges | km_traveled | location | label1 | miles_traveled | num_contestants | num_days | num_houseguests | num_housemates | num_legs | num_survivors | num_teams | num_tasks | presenter | professional_winner | runner_up | runner_ups | winner | winner_coach | winner_mentor | winners | winning_team | image | image_alt | image_size | image_upright}}<!-- End tracking --><noinclude>
{{Documentation}}
</noinclude>
9c6682df7f90e66fdd96e52db3d16b2d78e23ed6
Template:Convinfobox
10
33
44
2024-05-09T13:07:20Z
PTCSims
2
Created page with "{{Convinfobox/{{#if:{{{1|}}}|pri}}{{#if:{{{3|}}}|sec}}{{#if:{{{6|}}}|{{#if:{{{5|}}}|ter}}3|2}}|{{{1}}}|{{{2}}}|{{{3}}}|{{{4}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<noinclude>{{documentation}}</noinclude>"
wikitext
text/x-wiki
{{Convinfobox/{{#if:{{{1|}}}|pri}}{{#if:{{{3|}}}|sec}}{{#if:{{{6|}}}|{{#if:{{{5|}}}|ter}}3|2}}|{{{1}}}|{{{2}}}|{{{3}}}|{{{4}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<noinclude>{{documentation}}</noinclude>
dd1f683285c4b5ba7197ff1275954bd1592ad76a
Template:Convinfobox/2
10
34
45
2024-05-09T13:07:34Z
PTCSims
2
Created page with "<noinclude>empty [[Category:Subtemplates of Template Convinfobox]] </noinclude>"
wikitext
text/x-wiki
<noinclude>empty
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
b95cff677c7897f77c1cb03f8d7fabf9a61a3d5a
Template:InfoboxChallenger
10
35
49
2024-05-09T13:38:20Z
PTCSims
2
Created page with "{{Infobox | italic title = {{#ifeq: {{Str right|{{PAGENAMEBASE}}|7}} | List of | no | {{{italic_title|<noinclude>no</noinclude>}}} }} | bodyclass = vevent | aboveclass = summary | abovestyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1..."
wikitext
text/x-wiki
{{Infobox
| italic title = {{#ifeq: {{Str right|{{PAGENAMEBASE}}|7}} | List of | no | {{{italic_title|<noinclude>no</noinclude>}}} }}
| bodyclass = vevent
| aboveclass = summary
| abovestyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em;
| above = {{#if: {{{challenger_name|}}} | {{{challenger_name|}}} | <includeonly>''{{PAGENAMEBASE}}''</includeonly> }}
| subheaderstyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em; font-weight: bold; font-size: 120%;
| subheader = {{#invoke:Infobox television season name|getInfoboxSubHeader|{{{first_challenge|}}}|{{{series_number|}}}}}
| captionstyle = font-size: 95%; line-height: 1.5em;
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_alt|{{{alt|}}}}}}}}
| caption = {{{caption|}}}
| headerclass = summary
| headerstyle = background: {{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}; color: {{Greater color contrast ratio|{{If empty |{{{bg_colour|}}} |{{{bg_color|}}} |{{{bgcolour|}}} |{{{bgcolor|}}} |#CCCCFF }}|black|white}}; padding: 0.25em 1em; line-height: 1.5em;
| autoheaders = y
| labelstyle = white-space: nowrap;
| header1 = Challenge Career
| label1 = Native name
| data1 = {{{native_name|}}}
| label2 = Starring
| data2 = {{{starring|}}}
| label4 = Challenge seasons
| data4 = {{{seasons|}}}
| label5 = Season wins
| data5 = {{{season_wins|}}}
| label6 = Challenge wins
| data6 = {{{challengewins|}}}
| label7 = Eliminations
| data7 = {{{eliminations|}}}
| label8 = Money
| data8 = {{{money|}}}
| header9 = Spin-offs
| label10 = Seasons
| data10 = {{{cvseasons|}}}
| label11 = Challenge wins
| data11 = {{{cvchallengewins|}}}
| label12 = Eliminations
| data12 = {{{cvelim|}}}
|label13 = Money
| data13 = {{{cvmoney|}}}
| header14 = Additional information
| label15 = Filming dates
| data15 = {{#invoke:Infobox/dates|dates|{{{film_start|}}}|{{{film_end|}}}}}
| label16 = Website
| data16 = {{{website|}}}
| header17 = {{If empty |{{ucfirst:{{#invoke:Infobox television season name|getSeasonWord}} }} |Season }} chronology
| rowclass18 = noprint
| data18 = <!--
### PREVIOUS SEASON LINK ###
-->{{#if: {{{prev_season|}}} {{{prev_series|}}} | {{Align|right|← '''Previous'''<br />{{If empty |{{{prev_season|}}} |{{{prev_series|}}} }} }} | <!--
-->{{#if: {{#invoke:Infobox television season name|checkPrevSeason}} | {{align|right|<!--
-->← '''Previous'''<br />{{#invoke:Infobox television season name|getPrevSeasonArticle}}<!--
-->}} }} }}<!--
### NEXT SEASON LINK ###
-->{{#if: {{{next_season|}}} {{{next_series|}}} | {{Align|right|'''Next''' →<br />{{If empty |{{{next_season|}}} |{{{next_series|}}} }} }} |<!--
-->{{#if: {{#invoke:Infobox television season name|checkNextSeason}} | {{align|right|<!--
-->'''Next''' →<br />{{#invoke:Infobox television season name|getNextSeasonArticle}}<!--
-->}} }} }}
| belowclass = noprint
| below = {{#invoke:Infobox television season name|getListOfEpisodes|link={{{episode_list|}}}}}
}}
ebba11744a3b9c5bf1a0943b3ce3047f2a6ba1bf
Template:Infobox/doc
10
43
53
2024-05-09T13:55:19Z
PTCSims
2
Created page with "n"
wikitext
text/x-wiki
n
d1854cae891ec7b29161ccaf79a24b00c274bdaa
Template:Ya
10
44
55
2024-05-09T16:00:09Z
PTCSims
2
Created page with "<noinclude>{| class="wikitable" |- |</noinclude>data-sort-value="{{{sort|Yes}}}" style="background: #DFD; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-yes2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} |{{{text|[[File:Yes check.svg|13px|link={{{link|}}}|{{{1|Yes}}}]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Checkmark insertion templates]] </noinclude>"
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>data-sort-value="{{{sort|Yes}}}" style="background: #DFD; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-yes2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} |{{{text|[[File:Yes check.svg|13px|link={{{link|}}}|{{{1|Yes}}}]]}}}<noinclude>
|}
{{Documentation|Template:Table cell templates/doc}}
[[Category:Checkmark insertion templates]]
</noinclude>
2926a5983046f0b0aaa9c05f27162124e4b0b3a1
Template:Na
10
45
56
2024-05-09T16:00:43Z
PTCSims
2
Created page with "<noinclude>{| class="wikitable" |- |</noinclude>data-sort-value="{{{sort|No}}}" style="background: #FFE3E3; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} | {{{text|[[File:Dark Red x.svg|13px|link={{{link|}}}|{{{1|No}}}]]}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}}</noinclude>"
wikitext
text/x-wiki
<noinclude>{| class="wikitable"
|-
|</noinclude>data-sort-value="{{{sort|No}}}" style="background: #FFE3E3; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} | {{{text|[[File:Dark Red x.svg|13px|link={{{link|}}}|{{{1|No}}}]]}}}<noinclude>
|}
{{documentation|Template:Table cell templates/doc}}</noinclude>
637aee62826701894555a945430c2eb67fbee800
Template:N/a
10
46
57
2024-05-09T16:00:53Z
PTCSims
2
Created page with "{| class="wikitable" |- | <onlyinclude>data-sort-value="{{{sort|}}}" style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na" <!-- -->| {{{1|—}}}</onlyinclude> |} {{documentation}}"
wikitext
text/x-wiki
{| class="wikitable"
|-
| <onlyinclude>data-sort-value="{{{sort|}}}" style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na" <!--
-->| {{{1|—}}}</onlyinclude>
|}
{{documentation}}
de57d22a25fe8a983fcb2fd08a947f82ec9ff18e
The Challenge Simulators
0
16
58
48
2024-05-09T17:02:56Z
PTCSims
2
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Back Me Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Flipping Agents
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|-
|nowrap|''Andi''
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
|-
|nowrap|''Ari''
|SAFE
|-
|nowrap|''Ashley''
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|-
|nowrap|''Averey''
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|-
|nowrap|''Big T''
|SAFE
|-
|nowrap|''Blessed''
|SAFE
|-
|nowrap|''Brittany''
|SAFE
|-
|nowrap|''Flora''
|SAFE
|-
|nowrap|''Gib''
|SAFE
|-
|nowrap|''Holden''
|SAFE
|-
|nowrap|''Jonna''
|SAFE
|-
|nowrap|''Kam''
|SAFE
|-
|nowrap|''Ky''
|SAFE
|-
|nowrap|''Liam''
|SAFE
|-
|nowrap|''Marcia''
|SAFE
|-
|nowrap|''Marie''
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|-
|nowrap|''Nia''
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|-
|nowrap|''Reece''
|SAFE
|-
|nowrap|''Riley''
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|-
|nowrap|''Sand''
|SAFE
|-
|nowrap|''Sylvia''
|SAFE
|-
|nowrap|''Tina''
|SAFE
|-
|nowrap|''Tori''
|SAFE
|-
|nowrap|''Val''
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|-
|nowrap|''Andi''
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
|-
|nowrap|''Ari''
|SAFE
|-
|nowrap|''Ashley''
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|-
|nowrap|''Averey''
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|-
|nowrap|''Big T''
|SAFE
|-
|nowrap|''Blessed''
|SAFE
|-
|nowrap|''Brittany''
|SAFE
|-
|nowrap|''Flora''
|SAFE
|-
|nowrap|''Gib''
|SAFE
|-
|nowrap|''Holden''
|SAFE
|-
|nowrap|''Jonna''
|SAFE
|-
|nowrap|''Kam''
|SAFE
|-
|nowrap|''Ky''
|SAFE
|-
|nowrap|''Liam''
|SAFE
|-
|nowrap|''Marcia''
|SAFE
|-
|nowrap|''Marie''
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|-
|nowrap|''Nia''
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|-
|nowrap|''Reece''
|SAFE
|-
|nowrap|''Riley''
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|-
|nowrap|''Sand''
|SAFE
|-
|nowrap|''Sylvia''
|SAFE
|-
|nowrap|''Tina''
|SAFE
|-
|nowrap|''Tori''
|SAFE
|-
|nowrap|''Val''
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|}
cab1d09edc9ddee0b98544e5c60e996dfebb751c
59
58
2024-05-09T17:03:16Z
PTCSims
2
PTCSims moved page [[The Challenge: Spies, Lies & Allies]] to [[The Challenge Simulators]]
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|-
|align=left| '''[[a]]'''
|align=left| ''Rookie''
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Back Me Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Flipping Agents
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|-
|nowrap|''Andi''
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
|-
|nowrap|''Ari''
|SAFE
|-
|nowrap|''Ashley''
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|-
|nowrap|''Averey''
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|-
|nowrap|''Big T''
|SAFE
|-
|nowrap|''Blessed''
|SAFE
|-
|nowrap|''Brittany''
|SAFE
|-
|nowrap|''Flora''
|SAFE
|-
|nowrap|''Gib''
|SAFE
|-
|nowrap|''Holden''
|SAFE
|-
|nowrap|''Jonna''
|SAFE
|-
|nowrap|''Kam''
|SAFE
|-
|nowrap|''Ky''
|SAFE
|-
|nowrap|''Liam''
|SAFE
|-
|nowrap|''Marcia''
|SAFE
|-
|nowrap|''Marie''
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|-
|nowrap|''Nia''
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|-
|nowrap|''Reece''
|SAFE
|-
|nowrap|''Riley''
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|-
|nowrap|''Sand''
|SAFE
|-
|nowrap|''Sylvia''
|SAFE
|-
|nowrap|''Tina''
|SAFE
|-
|nowrap|''Tori''
|SAFE
|-
|nowrap|''Val''
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|-
|nowrap|''Andi''
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
|-
|nowrap|''Ari''
|SAFE
|-
|nowrap|''Ashley''
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|-
|nowrap|''Averey''
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|-
|nowrap|''Big T''
|SAFE
|-
|nowrap|''Blessed''
|SAFE
|-
|nowrap|''Brittany''
|SAFE
|-
|nowrap|''Flora''
|SAFE
|-
|nowrap|''Gib''
|SAFE
|-
|nowrap|''Holden''
|SAFE
|-
|nowrap|''Jonna''
|SAFE
|-
|nowrap|''Kam''
|SAFE
|-
|nowrap|''Ky''
|SAFE
|-
|nowrap|''Liam''
|SAFE
|-
|nowrap|''Marcia''
|SAFE
|-
|nowrap|''Marie''
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|-
|nowrap|''Nia''
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|-
|nowrap|''Reece''
|SAFE
|-
|nowrap|''Riley''
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|-
|nowrap|''Sand''
|SAFE
|-
|nowrap|''Sylvia''
|SAFE
|-
|nowrap|''Tina''
|SAFE
|-
|nowrap|''Tori''
|SAFE
|-
|nowrap|''Val''
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|}
cab1d09edc9ddee0b98544e5c60e996dfebb751c
61
59
2024-05-09T19:32:16Z
PTCSims
2
/* S1: Spies Lies Allies */
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| [[Andi Bassett]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ari Compono]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aurora The-Explorer]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ayanna Vasquez]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Blessed Jevdonna]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Brittany Reese]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Gib Jones]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Holden Tudix]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ky Iovia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Liam Chicabelle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marcia Queen]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Reece Rashaun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Riley Xo Thahtbeich]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Abooja]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Swindler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sand Castle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Val Hearted]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| [[Amanda Garcia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aneesa Ferreira]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ashley Mitchell]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Averey Tressler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tula "Big T" Fazakerley]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Flora Alekseyeun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Jonna Stephens]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Kam Williams]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marie Roda]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Moriah Jadea]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nia Moore]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nurys Mateo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Rachel Robinson]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sylvia Elsrode]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tina Bridges]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tori Deal]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Veronica Portillo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"| Blessed & Tori
| rowspan="2"| Holden & Jonna
| Andi
| rowspan="2"| Back Me Up
| rowspan="2"| Holden & Jonna
| rowspan="2"| Sylvia & Andi
|rowspan="2" {{Ya}}
| Jonna
| Tina & '''Sand'''
|-
|Sylvia
| Holden
| '''Flora''' & Brittany
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Flipping Agents
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|-
|nowrap|''Andi''
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
|-
|nowrap|''Ari''
|SAFE
|-
|nowrap|''Ashley''
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|-
|nowrap|''Averey''
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|-
|nowrap|''Big T''
|SAFE
|-
|nowrap|''Blessed''
|SAFE
|-
|nowrap|''Brittany''
|SAFE
|-
|nowrap|''Flora''
|SAFE
|-
|nowrap|''Gib''
|SAFE
|-
|nowrap|''Holden''
|SAFE
|-
|nowrap|''Jonna''
|SAFE
|-
|nowrap|''Kam''
|SAFE
|-
|nowrap|''Ky''
|SAFE
|-
|nowrap|''Liam''
|SAFE
|-
|nowrap|''Marcia''
|SAFE
|-
|nowrap|''Marie''
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|-
|nowrap|''Nia''
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|-
|nowrap|''Reece''
|SAFE
|-
|nowrap|''Riley''
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|-
|nowrap|''Sand''
|SAFE
|-
|nowrap|''Sylvia''
|SAFE
|-
|nowrap|''Tina''
|SAFE
|-
|nowrap|''Tori''
|SAFE
|-
|nowrap|''Val''
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|Riley
|-
|nowrap|''Andi''
|Big T
|-
|nowrap|''Aneesa''
|Ari
|-
|nowrap|''Ari''
|Aneesa
|-
|nowrap|''Ashley''
|Val
|-
|nowrap|''Aurora''
|Veronica
|-
|nowrap|''Averey''
|Ky
|-
|nowrap|''Ayanna''
|Marie
|-
|nowrap|''Big T''
|Andi
|-
|nowrap|''Blessed''
|Tori
|-
|nowrap|''Brittany''
|Flora
|-
|nowrap|''Flora''
|Brittany
|-
|nowrap|''Gib''
|Moriah
|-
|nowrap|''Holden''
|Jonna
|-
|nowrap|''Jonna''
|Holden
|-
|nowrap|''Kam''
|Liam
|-
|nowrap|''Ky''
|Averey
|-
|nowrap|''Liam''
|Kam
|-
|nowrap|''Marcia''
|Nia
|-
|nowrap|''Marie''
|Ayanna
|-
|nowrap|''Moriah''
|Gib
|-
|nowrap|''Nia''
|Marcia
|-
|nowrap|''Nurys''
|Sammy A.
|-
|nowrap|''Rachel''
|Reece
|-
|nowrap|''Reece''
|Rachel
|-
|nowrap|''Riley''
|Amanda
|-
|nowrap|''Sammy A.''
|Nurys
|-
|nowrap|''Sammy S.''
|Sylvia
|-
|nowrap|''Sand''
|Tina
|-
|nowrap|''Sylvia''
|Sammy S.
|-
|nowrap|''Tina''
|Sand
|-
|nowrap|''Tori''
|Blessed
|-
|nowrap|''Val''
|Ashley
|-
|nowrap|''Veronica''
|Aurora
|}
8256b02e9709f4e281f7d3c6441a501b040d6f9d
62
61
2024-05-09T20:53:45Z
PTCSims
2
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| [[Andi Bassett]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ari Compono]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aurora The-Explorer]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ayanna Vasquez]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Blessed Jevdonna]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Brittany Reese]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Gib Jones]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Holden Tudix]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ky Iovia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Liam Chicabelle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marcia Queen]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Reece Rashaun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Riley Xo Thahtbeich]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Abooja]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Swindler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sand Castle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Val Hearted]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| [[Amanda Garcia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aneesa Ferreira]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ashley Mitchell]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Averey Tressler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tula "Big T" Fazakerley]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Flora Alekseyeun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Jonna Stephens]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Kam Williams]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marie Roda]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Moriah Jadea]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nia Moore]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nurys Mateo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Rachel Robinson]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sylvia Elsrode]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tina Bridges]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tori Deal]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Veronica Portillo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"| Blessed & Tori
| rowspan="2"| Holden & Jonna
| Andi
| rowspan="2"| Back Me Up
| rowspan="2"| Holden & Jonna
| rowspan="2"| Sylvia & Andi
|rowspan="2" {{Ya}}
| Jonna
| Tina & '''Sand'''
|-
|Sylvia
| Holden
| '''Flora''' & Brittany
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Flipping Agents
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
|-
|nowrap|''Ari''
|SAFE
|-
|nowrap|''Ashley''
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|-
|nowrap|''Averey''
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|-
|nowrap|''Big T''
|SAFE
|-
|nowrap|''Blessed''
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Brittany''
|SAFE
|-
|nowrap|''Flora''
|SAFE
|-
|nowrap|''Gib''
|SAFE
|-
|nowrap|''Holden''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Jonna''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Kam''
|SAFE
|-
|nowrap|''Ky''
|SAFE
|-
|nowrap|''Liam''
|SAFE
|-
|nowrap|''Marcia''
|SAFE
|-
|nowrap|''Marie''
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|-
|nowrap|''Nia''
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|-
|nowrap|''Reece''
|SAFE
|-
|nowrap|''Riley''
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|-
|nowrap|''Sand''
|SAFE
|-
|nowrap|''Tina''
|SAFE
|-
|nowrap|''Tori''
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Val''
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|-
|nowrap|''Andi''
|bgcolor="tomato" |OUT|| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|bgcolor="tomato" |OUT|| colspan="15" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|colspan="2" |Riley
|-
|nowrap|''Aneesa''
|colspan="2" |Ari
|-
|nowrap|''Ari''
|colspan="2" |Aneesa
|-
|nowrap|''Ashley''
|colspan="2" |Val
|-
|nowrap|''Aurora''
|colspan="2" |Veronica
|-
|nowrap|''Averey''
|colspan="2" |Ky
|-
|nowrap|''Ayanna''
|colspan="2" |Marie
|-
|nowrap|''Big T''
|Andi
|Brittany
|-
|nowrap|''Blessed''
|colspan="2" |Tori
|-
|nowrap|''Brittany''
|Flora
|Big T
|-
|nowrap|''Flora''
|Brittany
|Holden
|-
|nowrap|''Gib''
|colspan="2" |Moriah
|-
|nowrap|''Holden''
|Jonna
|Flora
|-
|nowrap|''Jonna''
|Holden
|Sand
|-
|nowrap|''Kam''
|colspan="2" |Liam
|-
|nowrap|''Ky''
|colspan="2" |Averey
|-
|nowrap|''Liam''
|colspan="2" |Kam
|-
|nowrap|''Marcia''
|colspan="2" |Nia
|-
|nowrap|''Marie''
|colspan="2" |Ayanna
|-
|nowrap|''Moriah''
|colspan="2" |Gib
|-
|nowrap|''Nia''
|colspan="2" |Marcia
|-
|nowrap|''Nurys''
|colspan="2" |Sammy A.
|-
|nowrap|''Rachel''
|colspan="2" |Reece
|-
|nowrap|''Reece''
|colspan="2" |Rachel
|-
|nowrap|''Riley''
|colspan="2" |Amanda
|-
|nowrap|''Sammy A.''
|colspan="2" |Nurys
|-
|nowrap|''Sammy S.''
|Sylvia
|Tina
|-
|nowrap|''Sand''
|Tina
|Jonna
|-
|nowrap|''Tina''
|Sand
|Sammy S.
|-
|nowrap|''Tori''
|colspan="2" |Blessed
|-
|nowrap|''Val''
|colspan="2" |Ashley
|-
|nowrap|''Veronica''
|colspan="2" |Aurora
|-
|nowrap|''Andi''
|Big T|| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|Sammy S.|| colspan="15" style="color:#000; background-color:darkgray" |
|}
a418edbcb7274faaa8eb2c64bfdaf2e6b0eec2c3
63
62
2024-05-09T21:09:27Z
PTCSims
2
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| [[Andi Bassett]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ari Compono]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aurora The-Explorer]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ayanna Vasquez]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Blessed Jevdonna]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Brittany Reese]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Gib Jones]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Holden Tudix]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ky Iovia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Liam Chicabelle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marcia Queen]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Reece Rashaun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Riley Xo Thahtbeich]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Abooja]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Swindler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sand Castle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Val Hearted]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| [[Amanda Garcia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aneesa Ferreira]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ashley Mitchell]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Averey Tressler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tula "Big T" Fazakerley]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Flora Alekseyeun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Jonna Stephens]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Kam Williams]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marie Roda]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Moriah Jadea]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nia Moore]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nurys Mateo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Rachel Robinson]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sylvia Elsrode]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tina Bridges]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tori Deal]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Veronica Portillo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"| Blessed & Tori
| rowspan="2"| Holden & Jonna
| Andi
| rowspan="2"| Back Me Up
| rowspan="2"| Holden & Jonna
| rowspan="2"| Sylvia & Andi
|rowspan="2" {{Ya}}
| Jonna
| Tina & '''Sand'''
|-
|Sylvia
| Holden
| '''Flora''' & Brittany
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"| Ari & Aneesa
| rowspan="2"| Brittany & Big T
| Marcia
| rowspan="2"| Flipping Agents
| rowspan="2"| Brittany & Big T
| rowspan="2"| Kam & Marcia
|rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Kam
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Ari''
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Ashley''
|SAFE
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|SAFE
|-
|nowrap|''Averey''
|SAFE
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|SAFE
|-
|nowrap|''Big T''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Blessed''
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Brittany''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Flora''
|SAFE
|SAFE
|-
|nowrap|''Gib''
|SAFE
|SAFE
|-
|nowrap|''Holden''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Jonna''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Ky''
|SAFE
|SAFE
|-
|nowrap|''Liam''
|SAFE
|SAFE
|-
|nowrap|''Marie''
|SAFE
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|SAFE
|-
|nowrap|''Nia''
|SAFE
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|SAFE
|-
|nowrap|''Reece''
|SAFE
|SAFE
|-
|nowrap|''Riley''
|SAFE
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|SAFE
|-
|nowrap|''Sand''
|SAFE
|SAFE
|-
|nowrap|''Tina''
|SAFE
|SAFE
|-
|nowrap|''Tori''
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Val''
|SAFE
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|SAFE
|-
|nowrap|''Kam''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|colspan="3" |Riley
|-
|nowrap|''Aneesa''
|colspan="3" |Ari
|-
|nowrap|''Ari''
|colspan="3" |Aneesa
|-
|nowrap|''Ashley''
|colspan="3" |Val
|-
|nowrap|''Aurora''
|colspan="3" |Veronica
|-
|nowrap|''Averey''
|colspan="3" |Ky
|-
|nowrap|''Ayanna''
|colspan="3" |Marie
|-
|nowrap|''Big T''
|Andi
|colspan="2" |Brittany
|-
|nowrap|''Blessed''
|colspan="3" |Tori
|-
|nowrap|''Brittany''
|Flora
|colspan="2" |Big T
|-
|nowrap|''Flora''
|Brittany
|colspan="2" |Holden
|-
|nowrap|''Gib''
|colspan="3" |Moriah
|-
|nowrap|''Holden''
|Jonna
|colspan="2" |Flora
|-
|nowrap|''Jonna''
|Holden
|colspan="2" |Sand
|-
|nowrap|''Ky''
|colspan="3" |Averey
|-
|nowrap|''Liam''
|colspan="2" |Kam
|Nia
|-
|nowrap|''Marie''
|colspan="3" |Ayanna
|-
|nowrap|''Moriah''
|colspan="3" |Gib
|-
|nowrap|''Nia''
|colspan="2" |Marcia
|Liam
|-
|nowrap|''Nurys''
|colspan="3" |Sammy A.
|-
|nowrap|''Rachel''
|colspan="3" |Reece
|-
|nowrap|''Reece''
|colspan="3" |Rachel
|-
|nowrap|''Riley''
|colspan="3" |Amanda
|-
|nowrap|''Sammy A.''
|colspan="3" |Nurys
|-
|nowrap|''Sammy S.''
|Sylvia
|colspan="2" |Tina
|-
|nowrap|''Sand''
|Tina
|colspan="2" |Jonna
|-
|nowrap|''Tina''
|Sand
|colspan="2" |Sammy S.
|-
|nowrap|''Tori''
|colspan="3" |Blessed
|-
|nowrap|''Val''
|colspan="3" |Ashley
|-
|nowrap|''Veronica''
|colspan="3" |Aurora
|-
|nowrap|''Kam''
|colspan="2" |Liam
|-
|nowrap|''Marcia''
|colspan="2" |Nia
|-
|nowrap|''Andi''
|Big T|| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|Sammy S.|| colspan="15" style="color:#000; background-color:darkgray" |
|}
798e5f779c7fe2f0f7776c5d96ca9f0056a88f0f
64
63
2024-05-09T21:09:52Z
PTCSims
2
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| [[Andi Bassett]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ari Compono]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aurora The-Explorer]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ayanna Vasquez]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Blessed Jevdonna]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Brittany Reese]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Gib Jones]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Holden Tudix]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ky Iovia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Liam Chicabelle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marcia Queen]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Reece Rashaun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Riley Xo Thahtbeich]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Abooja]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Swindler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sand Castle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Val Hearted]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| [[Amanda Garcia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aneesa Ferreira]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ashley Mitchell]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Averey Tressler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tula "Big T" Fazakerley]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Flora Alekseyeun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Jonna Stephens]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Kam Williams]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marie Roda]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Moriah Jadea]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nia Moore]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nurys Mateo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Rachel Robinson]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sylvia Elsrode]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tina Bridges]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tori Deal]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Veronica Portillo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"| Blessed & Tori
| rowspan="2"| Holden & Jonna
| Andi
| rowspan="2"| Back Me Up
| rowspan="2"| Holden & Jonna
| rowspan="2"| Sylvia & Andi
|rowspan="2" {{Ya}}
| Jonna
| Tina & '''Sand'''
|-
|Sylvia
| Holden
| '''Flora''' & Brittany
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"| Ari & Aneesa
| rowspan="2"| Brittany & Big T
| Marcia
| rowspan="2"| Flipping Agents
| rowspan="2"| Brittany & Big T
| rowspan="2"| Kam & Marcia
|rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Kam
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Ari''
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Ashley''
|SAFE
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|SAFE
|-
|nowrap|''Averey''
|SAFE
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|SAFE
|-
|nowrap|''Big T''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Blessed''
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Brittany''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Flora''
|SAFE
|SAFE
|-
|nowrap|''Gib''
|SAFE
|SAFE
|-
|nowrap|''Holden''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Jonna''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Ky''
|SAFE
|SAFE
|-
|nowrap|''Liam''
|SAFE
|SAFE
|-
|nowrap|''Marie''
|SAFE
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|SAFE
|-
|nowrap|''Nia''
|SAFE
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|SAFE
|-
|nowrap|''Reece''
|SAFE
|SAFE
|-
|nowrap|''Riley''
|SAFE
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|SAFE
|-
|nowrap|''Sand''
|SAFE
|SAFE
|-
|nowrap|''Tina''
|SAFE
|SAFE
|-
|nowrap|''Tori''
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Val''
|SAFE
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|SAFE
|-
|nowrap|''Kam''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|colspan="3" |Riley
|-
|nowrap|''Aneesa''
|colspan="3" |Ari
|-
|nowrap|''Ari''
|colspan="3" |Aneesa
|-
|nowrap|''Ashley''
|colspan="3" |Val
|-
|nowrap|''Aurora''
|colspan="3" |Veronica
|-
|nowrap|''Averey''
|colspan="3" |Ky
|-
|nowrap|''Ayanna''
|colspan="3" |Marie
|-
|nowrap|''Big T''
|Andi
|colspan="2" |Brittany
|-
|nowrap|''Blessed''
|colspan="3" |Tori
|-
|nowrap|''Brittany''
|Flora
|colspan="2" |Big T
|-
|nowrap|''Flora''
|Brittany
|colspan="2" |Holden
|-
|nowrap|''Gib''
|colspan="3" |Moriah
|-
|nowrap|''Holden''
|Jonna
|colspan="2" |Flora
|-
|nowrap|''Jonna''
|Holden
|colspan="2" |Sand
|-
|nowrap|''Ky''
|colspan="3" |Averey
|-
|nowrap|''Liam''
|colspan="2" |Kam
|Nia
|-
|nowrap|''Marie''
|colspan="3" |Ayanna
|-
|nowrap|''Moriah''
|colspan="3" |Gib
|-
|nowrap|''Nia''
|colspan="2" |Marcia
|Liam
|-
|nowrap|''Nurys''
|colspan="3" |Sammy A.
|-
|nowrap|''Rachel''
|colspan="3" |Reece
|-
|nowrap|''Reece''
|colspan="3" |Rachel
|-
|nowrap|''Riley''
|colspan="3" |Amanda
|-
|nowrap|''Sammy A.''
|colspan="3" |Nurys
|-
|nowrap|''Sammy S.''
|Sylvia
|colspan="2" |Tina
|-
|nowrap|''Sand''
|Tina
|colspan="2" |Jonna
|-
|nowrap|''Tina''
|Sand
|colspan="2" |Sammy S.
|-
|nowrap|''Tori''
|colspan="3" |Blessed
|-
|nowrap|''Val''
|colspan="3" |Ashley
|-
|nowrap|''Veronica''
|colspan="3" |Aurora
|-
|nowrap|''Kam''
|colspan="2" |Liam|| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|colspan="2" |Nia|| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|Big T|| colspan="15" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|Sammy S.|| colspan="15" style="color:#000; background-color:darkgray" |
|}
6819fd4f5134d335a19db07a2ed3061cff51361e
65
64
2024-05-09T21:12:39Z
PTCSims
2
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| [[Andi Bassett]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ari Compono]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aurora The-Explorer]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ayanna Vasquez]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Blessed Jevdonna]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Brittany Reese]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Gib Jones]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Holden Tudix]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ky Iovia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Liam Chicabelle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marcia Queen]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Reece Rashaun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Riley Xo Thahtbeich]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Abooja]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Swindler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sand Castle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Val Hearted]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| [[Amanda Garcia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aneesa Ferreira]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ashley Mitchell]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Averey Tressler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tula "Big T" Fazakerley]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Flora Alekseyeun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Jonna Stephens]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Kam Williams]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marie Roda]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Moriah Jadea]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nia Moore]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nurys Mateo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Rachel Robinson]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sylvia Elsrode]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tina Bridges]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tori Deal]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Veronica Portillo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"| Blessed & Tori
| rowspan="2"| Holden & Jonna
| Andi
| rowspan="2"| Back Me Up
| rowspan="2"| Holden & Jonna
| rowspan="2"| Sylvia & Andi
|rowspan="2" {{Ya}}
| Jonna
| Tina & '''Sand'''
|-
|Sylvia
| Holden
| '''Flora''' & Brittany
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"| Ari & Aneesa
| rowspan="2"| Brittany & Big T
| Marcia
| rowspan="2"| Flipping Agents
| rowspan="2"| Brittany & Big T
| rowspan="2"| Kam & Marcia
|rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Kam
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"| Gib & Moriah
| rowspan="2"|
|
| rowspan="2"| Slipping Up
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Down to the Wire
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Higher Assets
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"|
| rowspan="2"|
|
| rowspan=2|Rage Cage
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Race to Escape
| rowspan="2"|
| rowspan="2"|
|
|
|
|-
|
|
|
|
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"|
| rowspan="2"|
|
| rowspan="2"| Hang in the Balance
| rowspan="2"|
| rowspan="2"|
|colspan="3" rowspan="2" {{N/a}}
|-
|
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Ari''
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Ashley''
|SAFE
|SAFE
|-
|nowrap|''Aurora''
|SAFE
|SAFE
|-
|nowrap|''Averey''
|SAFE
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|SAFE
|-
|nowrap|''Big T''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Blessed''
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Brittany''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Flora''
|SAFE
|SAFE
|-
|nowrap|''Gib''
|SAFE
|SAFE
|-
|nowrap|''Holden''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Jonna''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Ky''
|SAFE
|SAFE
|-
|nowrap|''Liam''
|SAFE
|SAFE
|-
|nowrap|''Marie''
|SAFE
|SAFE
|-
|nowrap|''Moriah''
|SAFE
|SAFE
|-
|nowrap|''Nia''
|SAFE
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|SAFE
|-
|nowrap|''Rachel''
|SAFE
|SAFE
|-
|nowrap|''Reece''
|SAFE
|SAFE
|-
|nowrap|''Riley''
|SAFE
|SAFE
|-
|nowrap|''Sammy A.''
|SAFE
|SAFE
|-
|nowrap|''Sammy S.''
|SAFE
|SAFE
|-
|nowrap|''Sand''
|SAFE
|SAFE
|-
|nowrap|''Tina''
|SAFE
|SAFE
|-
|nowrap|''Tori''
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Val''
|SAFE
|SAFE
|-
|nowrap|''Veronica''
|SAFE
|SAFE
|-
|nowrap|''Kam''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|colspan="3" |Riley
|-
|nowrap|''Aneesa''
|colspan="3" |Ari
|-
|nowrap|''Ari''
|colspan="3" |Aneesa
|-
|nowrap|''Ashley''
|colspan="3" |Val
|-
|nowrap|''Aurora''
|colspan="3" |Veronica
|-
|nowrap|''Averey''
|colspan="3" |Ky
|-
|nowrap|''Ayanna''
|colspan="3" |Marie
|-
|nowrap|''Big T''
|Andi
|colspan="2" |Brittany
|-
|nowrap|''Blessed''
|colspan="3" |Tori
|-
|nowrap|''Brittany''
|Flora
|colspan="2" |Big T
|-
|nowrap|''Flora''
|Brittany
|colspan="2" |Holden
|-
|nowrap|''Gib''
|colspan="3" |Moriah
|-
|nowrap|''Holden''
|Jonna
|colspan="2" |Flora
|-
|nowrap|''Jonna''
|Holden
|colspan="2" |Sand
|-
|nowrap|''Ky''
|colspan="3" |Averey
|-
|nowrap|''Liam''
|colspan="2" |Kam
|Nia
|-
|nowrap|''Marie''
|colspan="3" |Ayanna
|-
|nowrap|''Moriah''
|colspan="3" |Gib
|-
|nowrap|''Nia''
|colspan="2" |Marcia
|Liam
|-
|nowrap|''Nurys''
|colspan="3" |Sammy A.
|-
|nowrap|''Rachel''
|colspan="3" |Reece
|-
|nowrap|''Reece''
|colspan="3" |Rachel
|-
|nowrap|''Riley''
|colspan="3" |Amanda
|-
|nowrap|''Sammy A.''
|colspan="3" |Nurys
|-
|nowrap|''Sammy S.''
|Sylvia
|colspan="2" |Tina
|-
|nowrap|''Sand''
|Tina
|colspan="2" |Jonna
|-
|nowrap|''Tina''
|Sand
|colspan="2" |Sammy S.
|-
|nowrap|''Tori''
|colspan="3" |Blessed
|-
|nowrap|''Val''
|colspan="3" |Ashley
|-
|nowrap|''Veronica''
|colspan="3" |Aurora
|-
|nowrap|''Kam''
|colspan="2" |Liam|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|colspan="2" |Nia|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|Big T|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|Sammy S.|| colspan="20" style="color:#000; background-color:darkgray" |
|}
8f4f1e2a0bf3f92110aa4477457a1a0ae2611c1b
66
65
2024-05-09T22:31:00Z
PTCSims
2
wikitext
text/x-wiki
=='''S1: Spies Lies Allies'''==
{|
|- valign="top"
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |ORG Contestant
! colspan="1" nowrap="" |First Season
! ="" | Finish
|-
|align=left| [[Andi Bassett]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ari Compono]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aurora The-Explorer]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ayanna Vasquez]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Blessed Jevdonna]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Brittany Reese]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Gib Jones]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Holden Tudix]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ky Iovia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Liam Chicabelle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marcia Queen]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Reece Rashaun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Riley Xo Thahtbeich]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Abooja]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sammy Swindler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sand Castle]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Val Hearted]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|
{|class="wikitable sortable" style="font-size:100%; white-space:nowrap"
|-
! colspan="1" nowrap="" |IRL Contestant
! colspan="1" nowrap="" |First Season
! nowrap="" | Finish
|-
|align=left| [[Amanda Garcia]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Aneesa Ferreira]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Ashley Mitchell]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Averey Tressler]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tula "Big T" Fazakerley]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Flora Alekseyeun]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Jonna Stephens]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Kam Williams]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Marie Roda]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Moriah Jadea]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nia Moore]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Nurys Mateo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Rachel Robinson]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Sylvia Elsrode]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tina Bridges]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Tori Deal]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|-
|align=left| [[Veronica Portillo]]
|align=left| Rookie
| align=left rowspan="1"|Episode
|}
|}
{|class="wikitable" style="text-align:left ;white-space:nowrap"
! colspan="2"| Episode
! rowspan="2"| Gender
! rowspan="2"| Winners
! colspan="2"| Lair contestants
! rowspan="2"| Lair game
! colspan="5"| Lair outcome
|-
! #
! Mission
! Voted In
! Agency's Pick
! Winner(s)
! Eliminated
! Infiltrate
! Infiltrator
! Infiltrated Team
|-
! rowspan="2"| 1
| rowspan="2"| Compromised
| rowspan="16" {{n/a}}
| rowspan="2"| Blessed & Tori
| rowspan="2"| Holden & Jonna
| Andi
| rowspan="2"| Back Me Up
| rowspan="2"| Holden & Jonna
| rowspan="2"| Sylvia & Andi
|rowspan="2" {{Ya}}
| Jonna
| Tina & '''Sand'''
|-
|Sylvia
| Holden
| '''Flora''' & Brittany
|-
! rowspan="2"| 2
| rowspan="2"| Heli Heist
| rowspan="2"| Ari & Aneesa
| rowspan="2"| Brittany & Big T
| Marcia
| rowspan="2"| Flipping Agents
| rowspan="2"| Brittany & Big T
| rowspan="2"| Kam & Marcia
|rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Kam
|-
! rowspan="2"| 3
| rowspan="2"| Sea Cave Recon
| rowspan="2"| Gib & Moriah
| rowspan="2"| Sammy A. & Nurys
| Riley
| rowspan="2"| Slipping Up
| rowspan="2"| Sammy A. & Nurys
| rowspan="2"| Riley & Ashley
|rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Ashley
|-
! rowspan="2"| 4
| rowspan="2" nowrap=""| Undercover Comms
| rowspan="2"| Gib & Moriah
| rowspan="2"| Sammy A. & Nurys
| Ky
| rowspan="2"| Down to the Wire
| rowspan="2"| Sammy A. & Nurys
| rowspan="2"| Ky & Rachel
|rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Rachel
|-
! rowspan=2|5
| rowspan=2|Mindfield
| rowspan="2"| Sammy S. & Tina
| rowspan="2"| Gib & Moriah
| Aneesa
| rowspan=2|Higher Assets
| rowspan="2"| Aneesa & Val
| rowspan="2"| Gib & Moriah
|rowspan=2 {{Ya}}
| Val
| Ari & '''Aneesa'''
|-
|Val
| Aneesa
| '''Val''' & Amanda
|-
! rowspan=2|6/7
| rowspan=2|Turning Agents
| rowspan="2"| Holden & Flora
| rowspan="2"| Aurora & Veronica
| Amanda
| rowspan=2|Rage Cage
| rowspan="2"| Amanda & Liam
| rowspan="2"| Aurora & Veronica
| rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Liam
|-
! rowspan="2"| 8
| rowspan="2"| Dive Bomb
| rowspan="2"| Holden & Flora
| rowspan="2"| Sammy S. & Tina
| Tori
| rowspan="2"| Race to Escape
| rowspan="2"| Tori & Val
| rowspan="2"| Sammy S. & Tina
| rowspan=2 {{Na}}
| colspan=2 rowspan=2 {{n/a}}
|-
|Val
|-
! rowspan="2"| 9
| rowspan="2"| Bombshell Battle
| rowspan="2"| Brittany & Big T
| rowspan="2"| Reece & Averey
| Jonna
| rowspan="2"| Hang in the Balance
| rowspan="2"| Reece & Avery
| rowspan="2"| Ayanna & Jonna
|colspan="3" rowspan="2" {{N/a}}
|-
|Ayanna
|-
! #
! Mission
! Gender
! Winners
! Agency's Pick
! Called Out
! Lair game
! Winner
! Eliminated
! Infiltrate
! Infiltrated Team
! Swapped
|-
! 10
| Diamond Dash
|IRL
|
|
|
| Seek and Destroy
|
|
|
|
|-
!11
| Satellite Sabotage
|ORG
|
|
|
| Pole Wrestle
|
|
|
|
|
|-
!12
| Brush Contact
|IRL
|
|
|
| Bombs Away
|
|
|
|
|
|-
!13
| nowrap="" |Sunken Intelligence
|ORG
|
|
|
|Rope Burn
|
|
|
|
|
|-
!14
| Submerged
|IRL
|
|
|
|Vault Escape
|
|
|
|
|
|-
!15
| Boom Raiders
|ORG
|
|
|
|Burning Bridges
|
|
|
|
|
|-
!16
| nowrap="" |Million Dollar Heist
|IRL
|
|
|
|License to Chill
|
|
|
|
|-
!17
| Dead Drop
|ORG
|
|
|
|Rocket Run
|
|
| rowspan=5 colspan=3 {{n/a}}
|-
!#
!Mission
!Gender
!Winners
!Voted In
!Called Out
!Lair game
!Winner
!Eliminated
|-
!rowspan=2|18
|rowspan=2 {{n/a}}
|IRL
|rowspan=2 {{n/a}}
|
|
| Drone Drop
|
|
|-
|ORG
|
|
| Triple Threat
|
|
|-
!rowspan=2|18/19
|Final Challenge
|{{n/a}}
|
|colspan=12|2nd: ; 3rd: ; 4th:
|}
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|-
|nowrap|''Aneesa''
|SAFE
| bgcolor="deepskyblue" |WIN
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Ari''
|SAFE
| bgcolor="deepskyblue" |WIN
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Averey''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Big T''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Blessed''
| bgcolor="deepskyblue" |WIN
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Brittany''
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
|-
|nowrap|''Flora''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Holden''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
| bgcolor="deepskyblue" |WIN
|SAFE
|-
|nowrap|''Liam''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|-
|nowrap|''Marie''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Nia''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Nurys''
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Reece''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|-
|nowrap|''Sammy A.''
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Sand''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|-
|nowrap|''Tori''
| bgcolor="deepskyblue" |WIN
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Val''
|SAFE
|SAFE
|SAFE
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|-
|nowrap|''Ayanna''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jonna''
| style="color:#000; background-color:green" |<font color="white">ELIM</font>
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sammy S.''
|SAFE
|SAFE
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Tina''
|SAFE
|SAFE
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Aurora''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Veronica''
|SAFE
|SAFE
|SAFE
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Gib''
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
| bgcolor="deepskyblue" |WIN
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Moriah''
|SAFE
|SAFE
| bgcolor="deepskyblue" |WIN
| bgcolor="deepskyblue" |WIN
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Ky''
|SAFE
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Rachel''
|SAFE
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Ashley''
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Riley''
|SAFE
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kam''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|SAFE
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|bgcolor="tomato" |OUT|| colspan="20" style="color:#000; background-color:darkgray" |
|}
;Competition key
:{{Colorbox|lime|border=silver}} The contestant won the competition
:{{Colorbox|skyblue|border=silver}} The contestant made it to the end of the challenge, but lost in the final
:{{Colorbox|orange|border=silver}} The contestant made it to the end but was purged in the final
:{{Colorbox|deepskyblue|border=silver}} The contestant won the daily challenge and was one of the agents
:{{Colorbox|green|border=silver}} The contestant won in the lair
:{{Colorbox|tomato|border=silver}} The contestant lost in the lair
{|class="wikitable" style="text-align:center"
|-
!rowspan=2;colspan=2|Contestants!!colspan=20|Episodes
|-
!1
!2
!3
!4
!5
!6/7
!8
!9
!10
!11
!12
!13
!14
!15
!16
!17
!18
!colspan="3"|Final
|-
|nowrap|''Amanda''
|colspan="3" |Riley
|colspan="2" |Val
|colspan="3" |Ari
| bgcolor="dodgerblue"|Sapphire
|-
|nowrap|''Aneesa''
|colspan="5" |Ari
|colspan="3" |Val
| bgcolor="3FD88A" |Emerald
|-
|nowrap|''Ari''
|colspan="5" |Aneesa
|colspan="3" |Amanda
| bgcolor="3FD88A" |Emerald
|-
|nowrap|''Averey''
|colspan="4" |Ky
|colspan="4" |Reece
| bgcolor="dodgerblue"|Sapphire
|-
|nowrap|''Big T''
|Andi
|colspan="7" |Brittany
|bgcolor="#FF2EA1"|Ruby
|-
|nowrap|''Blessed''
|colspan="8" |Tori
| bgcolor="dodgerblue"|Sapphire
|-
|nowrap|''Brittany''
|Flora
|colspan="7" |Big T
| bgcolor="dodgerblue"|Sapphire
|-
|nowrap|''Flora''
|Brittany
|colspan="7" |Holden
| bgcolor="3FD88A" |Emerald
|-
|nowrap|''Holden''
|Jonna
|colspan="7" |Flora
|bgcolor="#FF2EA1"|Ruby
|-
|nowrap|''Liam''
|colspan="2" |Kam
|colspan="6" |Nia
|bgcolor="#FF2EA1"|Ruby
|-
|nowrap|''Marie''
|colspan="8" |Ayanna
| bgcolor="3FD88A" |Emerald
|-
|nowrap|''Nia''
|colspan="2" |Marcia
|colspan="6" |Liam
|bgcolor="#FF2EA1"|Ruby
|-
|nowrap|''Nurys''
|colspan="8" |Sammy A.
|bgcolor="#FF2EA1"|Ruby
|-
|nowrap|''Reece''
|colspan="4" |Rachel
|colspan="4" |Averey
| bgcolor="dodgerblue"|Sapphire
|-
|nowrap|''Sammy A.''
|colspan="8" |Nurys
| bgcolor="3FD88A" |Emerald
|-
|nowrap|''Sand''
|Tina
|colspan="7" |Jonna
|bgcolor="#FF2EA1"|Ruby
|-
|nowrap|''Tori''
|colspan="8" |Blessed
| bgcolor="dodgerblue"|Sapphire
|-
|nowrap|''Val''
|colspan="3" |Ashley
|colspan="2" |Amanda
|colspan="3" |Aneesa
| bgcolor="3FD88A" |Emerald
|-
|nowrap|''Ayanna''
|colspan="8" |Marie|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Jonna''
|Holden
|colspan="7" |Sand|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sammy S.''
|Sylvia
|colspan="6" |Tina|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Tina''
|Sand
|colspan="6" |Sammy S.|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Aurora''
|colspan="6" |Veronica|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Veronica''
|colspan="6" |Aurora|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Gib''
|colspan="5" |Moriah|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Moriah''
|colspan="5" |Gib|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Ky''
|colspan="4" |Averey|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Rachel''
|colspan="4" |Reece|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Ashley''
|colspan="3" |Val|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Riley''
|colspan="3" |Amanda|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Kam''
|colspan="2" |Liam|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Marcia''
|colspan="2" |Nia|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Andi''
|Big T|| colspan="20" style="color:#000; background-color:darkgray" |
|-
|nowrap|''Sylvia''
|Sammy S.|| colspan="20" style="color:#000; background-color:darkgray" |
|}
b14423dfffe6771c89a4dabdaf1c788cdb64f675
The Challenge: Spies, Lies & Allies
0
47
60
2024-05-09T17:03:16Z
PTCSims
2
PTCSims moved page [[The Challenge: Spies, Lies & Allies]] to [[The Challenge Simulators]]
wikitext
text/x-wiki
#REDIRECT [[The Challenge Simulators]]
6ab9ef1b2c000f0c74035fa24e8a9bcad7e1557f